@misael703/ui 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/{chunk-PSJVU4E4.js → chunk-2UTXUFZY.js} +33 -10
  2. package/dist/chunk-2UTXUFZY.js.map +1 -0
  3. package/dist/{chunk-GCW5JYWQ.js → chunk-EUB4PHPI.js} +56 -2
  4. package/dist/chunk-EUB4PHPI.js.map +1 -0
  5. package/dist/chunk-IEPKSPBX.mjs +97 -0
  6. package/dist/chunk-IEPKSPBX.mjs.map +1 -0
  7. package/dist/{chunk-V26K66NP.mjs → chunk-JBUMN6Q4.mjs} +33 -10
  8. package/dist/chunk-JBUMN6Q4.mjs.map +1 -0
  9. package/dist/{chunk-7VG64AY7.mjs → chunk-JWGK5HKF.mjs} +3 -3
  10. package/dist/{chunk-7VG64AY7.mjs.map → chunk-JWGK5HKF.mjs.map} +1 -1
  11. package/dist/{chunk-26KJA67X.js → chunk-QSMUGO5F.js} +13 -15
  12. package/dist/chunk-QSMUGO5F.js.map +1 -0
  13. package/dist/{chunk-HBUP7XO2.js → chunk-TI5QCUAV.js} +4 -4
  14. package/dist/{chunk-HBUP7XO2.js.map → chunk-TI5QCUAV.js.map} +1 -1
  15. package/dist/{chunk-SYX4GZ7E.mjs → chunk-YIZ2QRHJ.mjs} +13 -15
  16. package/dist/chunk-YIZ2QRHJ.mjs.map +1 -0
  17. package/dist/components/Button.d.mts +6 -0
  18. package/dist/components/Button.d.ts +6 -0
  19. package/dist/components/Button.js +4 -3
  20. package/dist/components/Button.mjs +2 -1
  21. package/dist/components/Display.d.mts +6 -0
  22. package/dist/components/Display.d.ts +6 -0
  23. package/dist/components/Display.js +13 -12
  24. package/dist/components/Display.mjs +2 -1
  25. package/dist/components/Layout.js +19 -19
  26. package/dist/components/Layout.mjs +2 -2
  27. package/dist/components/Primitives.d.mts +12 -1
  28. package/dist/components/Primitives.d.ts +12 -1
  29. package/dist/components/Primitives.js +12 -4
  30. package/dist/components/Primitives.mjs +1 -1
  31. package/dist/index.d.mts +1 -1
  32. package/dist/index.d.ts +1 -1
  33. package/dist/index.js +54 -46
  34. package/dist/index.mjs +4 -4
  35. package/package.json +1 -1
  36. package/dist/chunk-26KJA67X.js.map +0 -1
  37. package/dist/chunk-6MEOR4YO.mjs +0 -45
  38. package/dist/chunk-6MEOR4YO.mjs.map +0 -1
  39. package/dist/chunk-GCW5JYWQ.js.map +0 -1
  40. package/dist/chunk-PSJVU4E4.js.map +0 -1
  41. package/dist/chunk-SYX4GZ7E.mjs.map +0 -1
  42. package/dist/chunk-V26K66NP.mjs.map +0 -1
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var chunkEUB4PHPI_js = require('./chunk-EUB4PHPI.js');
3
4
  var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
4
5
  var React = require('react');
5
6
  var jsxRuntime = require('react/jsx-runtime');
@@ -34,20 +35,42 @@ var Button = React__namespace.forwardRef(function Button2({
34
35
  className,
35
36
  disabled,
36
37
  children,
38
+ asChild = false,
37
39
  ...rest
38
40
  }, ref) {
41
+ const cls = chunkPASF6T4H_js.cx(
42
+ "btn",
43
+ `btn--${variant}`,
44
+ `btn--${size}`,
45
+ fullWidth && "btn--block",
46
+ loading && "is-loading",
47
+ className
48
+ );
49
+ if (asChild) {
50
+ const blocked = disabled || loading;
51
+ return /* @__PURE__ */ jsxRuntime.jsxs(
52
+ chunkEUB4PHPI_js.Slot,
53
+ {
54
+ ref,
55
+ className: cls,
56
+ "aria-busy": loading || void 0,
57
+ "aria-disabled": blocked || void 0,
58
+ "data-disabled": blocked || void 0,
59
+ ...rest,
60
+ children: [
61
+ loading && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "spinner spinner--inverse", "aria-hidden": "true" }),
62
+ !loading && iconLeft,
63
+ /* @__PURE__ */ jsxRuntime.jsx(chunkEUB4PHPI_js.Slottable, { children }),
64
+ !loading && iconRight
65
+ ]
66
+ }
67
+ );
68
+ }
39
69
  return /* @__PURE__ */ jsxRuntime.jsxs(
40
70
  "button",
41
71
  {
42
72
  ref,
43
- className: chunkPASF6T4H_js.cx(
44
- "btn",
45
- `btn--${variant}`,
46
- `btn--${size}`,
47
- fullWidth && "btn--block",
48
- loading && "is-loading",
49
- className
50
- ),
73
+ className: cls,
51
74
  disabled: disabled || loading,
52
75
  "aria-busy": loading || void 0,
53
76
  ...rest,
@@ -68,5 +91,5 @@ var ButtonGroup = React__namespace.forwardRef(
68
91
 
69
92
  exports.Button = Button;
70
93
  exports.ButtonGroup = ButtonGroup;
71
- //# sourceMappingURL=chunk-PSJVU4E4.js.map
72
- //# sourceMappingURL=chunk-PSJVU4E4.js.map
94
+ //# sourceMappingURL=chunk-2UTXUFZY.js.map
95
+ //# sourceMappingURL=chunk-2UTXUFZY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Button.tsx"],"names":["React","Button","cx","jsxs","Slot","jsx","Slottable","ButtonGroup"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCO,IAAM,MAAA,GAAeA,gBAAA,CAAA,UAAA,CAA2C,SAASC,OAAAA,CAC9E;AAAA,EACE,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,IAAA;AAAA,EACP,OAAA,GAAU,KAAA;AAAA,EACV,QAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,GAAA,GAAMC,mBAAA;AAAA,IACV,KAAA;AAAA,IACA,QAAQ,OAAO,CAAA,CAAA;AAAA,IACf,QAAQ,IAAI,CAAA,CAAA;AAAA,IACZ,SAAA,IAAa,YAAA;AAAA,IACb,OAAA,IAAW,YAAA;AAAA,IACX;AAAA,GACF;AAEA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,MAAM,UAAU,QAAA,IAAY,OAAA;AAC5B,IAAA,uBACEC,eAAA;AAAA,MAACC,qBAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,GAAA;AAAA,QACX,aAAW,OAAA,IAAW,MAAA;AAAA,QACtB,iBAAe,OAAA,IAAW,MAAA;AAAA,QAC1B,iBAAe,OAAA,IAAW,MAAA;AAAA,QACzB,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,OAAA,oBAAWC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0BAAA,EAA2B,eAAY,MAAA,EAAO,CAAA;AAAA,UACzE,CAAC,OAAA,IAAW,QAAA;AAAA,0BACbA,cAAA,CAACC,8BAAW,QAAA,EAAS,CAAA;AAAA,UACpB,CAAC,OAAA,IAAW;AAAA;AAAA;AAAA,KACf;AAAA,EAEJ;AAEA,EAAA,uBACEH,eAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,GAAA;AAAA,MACX,UAAU,QAAA,IAAY,OAAA;AAAA,MACtB,aAAW,OAAA,IAAW,MAAA;AAAA,MACrB,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,OAAA,oBAAWE,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0BAAA,EAA2B,eAAY,MAAA,EAAO,CAAA;AAAA,QACzE,CAAC,OAAA,IAAW,QAAA;AAAA,QACZ,QAAA;AAAA,QACA,CAAC,OAAA,IAAW;AAAA;AAAA;AAAA,GACf;AAEJ,CAAC;AAGM,IAAM,WAAA,GAAoBL,gBAAA,CAAA,UAAA;AAAA,EAC/B,SAASO,aAAY,EAAE,SAAA,EAAW,OAAO,OAAA,EAAS,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AAChE,IAAA,uBAAOF,cAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,IAAA,EAAY,SAAA,EAAWH,oBAAG,WAAA,EAAa,SAAS,CAAA,EAAI,GAAG,IAAA,EAAM,CAAA;AAAA,EACrF;AACF","file":"chunk-2UTXUFZY.js","sourcesContent":["import * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { Slot, Slottable } from './Primitives';\n\nexport type ButtonVariant =\n | 'primary'\n | 'secondary'\n | 'outline'\n | 'ghost'\n | 'subtle'\n | 'danger'\n | 'success'\n | 'warning'\n | 'link';\n\nexport type ButtonSize = 'sm' | 'md' | 'lg';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n loading?: boolean;\n iconLeft?: React.ReactNode;\n iconRight?: React.ReactNode;\n fullWidth?: boolean;\n /**\n * Render as the provided single child element instead of `<button>`\n * (e.g. `next/link`'s `<a>`). The kit's classes, ref and handlers are\n * merged onto that element; `iconLeft`/`iconRight`/loading are preserved.\n */\n asChild?: boolean;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant = 'primary',\n size = 'md',\n loading = false,\n iconLeft,\n iconRight,\n fullWidth = false,\n className,\n disabled,\n children,\n asChild = false,\n ...rest\n },\n ref\n) {\n const cls = cx(\n 'btn',\n `btn--${variant}`,\n `btn--${size}`,\n fullWidth && 'btn--block',\n loading && 'is-loading',\n className\n );\n\n if (asChild) {\n const blocked = disabled || loading;\n return (\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n className={cls}\n aria-busy={loading || undefined}\n aria-disabled={blocked || undefined}\n data-disabled={blocked || undefined}\n {...rest}\n >\n {loading && <span className=\"spinner spinner--inverse\" aria-hidden=\"true\" />}\n {!loading && iconLeft}\n <Slottable>{children}</Slottable>\n {!loading && iconRight}\n </Slot>\n );\n }\n\n return (\n <button\n ref={ref}\n className={cls}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n {...rest}\n >\n {loading && <span className=\"spinner spinner--inverse\" aria-hidden=\"true\" />}\n {!loading && iconLeft}\n {children}\n {!loading && iconRight}\n </button>\n );\n});\n\n// ---------- ButtonGroup --------------------------------------------------\nexport const ButtonGroup = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function ButtonGroup({ className, role = 'group', ...rest }, ref) {\n return <div ref={ref} role={role} className={cx('btn-group', className)} {...rest} />;\n }\n);\n"]}
@@ -61,9 +61,63 @@ var ScrollArea = React__namespace.forwardRef(function ScrollArea2({ maxHeight, o
61
61
  }
62
62
  );
63
63
  });
64
+ function composeRefs(...refs) {
65
+ return (node) => {
66
+ for (const ref of refs) {
67
+ if (typeof ref === "function") ref(node);
68
+ else if (ref != null) ref.current = node;
69
+ }
70
+ };
71
+ }
72
+ function readRef(el) {
73
+ const fromProps = el.props.ref;
74
+ const fromEl = el.ref;
75
+ return fromProps ?? fromEl;
76
+ }
77
+ function mergeProps(slotProps, childProps) {
78
+ const merged = { ...slotProps };
79
+ for (const key of Object.keys(childProps)) {
80
+ const slotValue = slotProps[key];
81
+ const childValue = childProps[key];
82
+ if (/^on[A-Z]/.test(key) && typeof slotValue === "function" && typeof childValue === "function") {
83
+ merged[key] = (...args) => {
84
+ childValue(...args);
85
+ slotValue(...args);
86
+ };
87
+ } else if (key === "className") {
88
+ merged[key] = chunkPASF6T4H_js.cx(slotProps.className, childProps.className);
89
+ } else if (key === "style") {
90
+ merged[key] = { ...slotProps.style, ...childProps.style };
91
+ } else {
92
+ merged[key] = childValue !== void 0 ? childValue : slotValue;
93
+ }
94
+ }
95
+ return merged;
96
+ }
97
+ function Slottable({ children }) {
98
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
99
+ }
100
+ var Slot = React__namespace.forwardRef(
101
+ function Slot2({ children, ...slotProps }, ref) {
102
+ const childArray = React__namespace.Children.toArray(children);
103
+ const slottable = childArray.find(
104
+ (c) => React__namespace.isValidElement(c) && c.type === Slottable
105
+ );
106
+ const target = slottable ? slottable.props.children : children;
107
+ if (!React__namespace.isValidElement(target)) return null;
108
+ const element = target;
109
+ const merged = mergeProps(slotProps, element.props);
110
+ const composed = ref ? composeRefs(ref, readRef(element)) : readRef(element);
111
+ merged.ref = composed;
112
+ const newChildren = slottable ? childArray.map((c) => c === slottable ? element.props.children : c) : element.props.children;
113
+ return React__namespace.cloneElement(element, merged, ...React__namespace.Children.toArray(newChildren));
114
+ }
115
+ );
64
116
 
65
117
  exports.AspectRatio = AspectRatio;
66
118
  exports.ScrollArea = ScrollArea;
67
119
  exports.Separator = Separator;
68
- //# sourceMappingURL=chunk-GCW5JYWQ.js.map
69
- //# sourceMappingURL=chunk-GCW5JYWQ.js.map
120
+ exports.Slot = Slot;
121
+ exports.Slottable = Slottable;
122
+ //# sourceMappingURL=chunk-EUB4PHPI.js.map
123
+ //# sourceMappingURL=chunk-EUB4PHPI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Primitives.tsx"],"names":["React","AspectRatio","jsx","cx","Separator","ScrollArea","Slot"],"mappings":"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","file":"chunk-EUB4PHPI.js","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\n\n// ---------- AspectRatio ------------------------------------------------\nexport interface AspectRatioProps extends React.HTMLAttributes<HTMLDivElement> {\n ratio?: number;\n}\n\nexport const AspectRatio = React.forwardRef<HTMLDivElement, AspectRatioProps>(function AspectRatio(\n { ratio = 16 / 9, style, className, children, ...rest },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cx('aspect-ratio', className)}\n style={{ position: 'relative', width: '100%', aspectRatio: String(ratio), ...style }}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\n// ---------- Separator --------------------------------------------------\nexport interface SeparatorProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: 'horizontal' | 'vertical';\n decorative?: boolean;\n}\n\nexport const Separator = React.forwardRef<HTMLDivElement, SeparatorProps>(function Separator(\n { orientation = 'horizontal', decorative = true, className, ...rest },\n ref\n) {\n const a11y = decorative ? { role: 'none' } : { role: 'separator', 'aria-orientation': orientation };\n return (\n <div\n ref={ref}\n {...a11y}\n className={cx('separator', `separator--${orientation}`, className)}\n {...rest}\n />\n );\n});\n\n// ---------- ScrollArea -------------------------------------------------\nexport interface ScrollAreaProps extends React.HTMLAttributes<HTMLDivElement> {\n maxHeight?: number | string;\n orientation?: 'vertical' | 'horizontal' | 'both';\n}\n\nexport const ScrollArea = React.forwardRef<HTMLDivElement, ScrollAreaProps>(function ScrollArea(\n { maxHeight, orientation = 'vertical', className, style, children, ...rest },\n ref\n) {\n const overflow =\n orientation === 'horizontal'\n ? { overflowX: 'auto' as const, overflowY: 'hidden' as const }\n : orientation === 'both'\n ? { overflow: 'auto' as const }\n : { overflowY: 'auto' as const, overflowX: 'hidden' as const };\n return (\n <div\n ref={ref}\n className={cx('scroll-area', `scroll-area--${orientation}`, className)}\n style={{ ...overflow, maxHeight, ...style }}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\n// ---------- Slot (polymorphism: the `asChild` pattern) -----------------\n// Dependency-free reimplementation of the well-known Slot/Slottable pattern.\n// Lets a component render *as* a consumer-provided element (e.g. next/link's\n// <a>) while still injecting its own className, handlers, ref and ARIA.\n\ntype AnyProps = Record<string, unknown>;\n\nfunction composeRefs<T>(...refs: Array<React.Ref<T> | undefined>): React.RefCallback<T> {\n return (node) => {\n for (const ref of refs) {\n if (typeof ref === 'function') ref(node);\n else if (ref != null) (ref as React.MutableRefObject<T | null>).current = node;\n }\n };\n}\n\nfunction readRef(el: React.ReactElement): React.Ref<unknown> | undefined {\n // React 18 exposes ref on the element; React 19 moves it into props.\n const fromProps = (el.props as { ref?: React.Ref<unknown> }).ref;\n const fromEl = (el as { ref?: React.Ref<unknown> }).ref;\n return fromProps ?? fromEl;\n}\n\nfunction mergeProps(slotProps: AnyProps, childProps: AnyProps): AnyProps {\n const merged: AnyProps = { ...slotProps };\n for (const key of Object.keys(childProps)) {\n const slotValue = slotProps[key];\n const childValue = childProps[key];\n if (/^on[A-Z]/.test(key) && typeof slotValue === 'function' && typeof childValue === 'function') {\n // Child's own handler runs first, then the component's.\n merged[key] = (...args: unknown[]) => {\n (childValue as (...a: unknown[]) => unknown)(...args);\n (slotValue as (...a: unknown[]) => unknown)(...args);\n };\n } else if (key === 'className') {\n merged[key] = cx(slotProps.className as string, childProps.className as string);\n } else if (key === 'style') {\n merged[key] = { ...(slotProps.style as object), ...(childProps.style as object) };\n } else {\n merged[key] = childValue !== undefined ? childValue : slotValue;\n }\n }\n return merged;\n}\n\n/**\n * Marks which child of an `asChild` component is the element to merge onto.\n * Siblings (icons, spinners) are preserved as the slotted element's children.\n */\nexport function Slottable({ children }: { children: React.ReactNode }): React.ReactElement {\n return <>{children}</>;\n}\n\nexport interface SlotProps {\n children?: React.ReactNode;\n}\n\nexport const Slot = React.forwardRef<HTMLElement, SlotProps & React.HTMLAttributes<HTMLElement>>(\n function Slot({ children, ...slotProps }, ref) {\n const childArray = React.Children.toArray(children);\n const slottable = childArray.find(\n (c) => React.isValidElement(c) && c.type === Slottable,\n ) as React.ReactElement | undefined;\n\n const target = slottable\n ? (slottable.props as { children?: React.ReactNode }).children\n : children;\n\n if (!React.isValidElement(target)) return null;\n const element = target as React.ReactElement<{ children?: React.ReactNode }>;\n\n const merged = mergeProps(slotProps as AnyProps, element.props as AnyProps);\n const composed = ref ? composeRefs(ref, readRef(element)) : readRef(element);\n (merged as { ref?: React.Ref<unknown> }).ref = composed;\n\n // With Slottable, the component's own siblings replace the marker and\n // become the slotted element's children (its original children last).\n const newChildren = slottable\n ? childArray.map((c) => (c === slottable ? element.props.children : c))\n : element.props.children;\n\n return React.cloneElement(element, merged, ...React.Children.toArray(newChildren));\n },\n);\n"]}
@@ -0,0 +1,97 @@
1
+ import { cx } from './chunk-IEPCH3JB.mjs';
2
+ import * as React from 'react';
3
+ import { jsx, Fragment } from 'react/jsx-runtime';
4
+
5
+ var AspectRatio = React.forwardRef(function AspectRatio2({ ratio = 16 / 9, style, className, children, ...rest }, ref) {
6
+ return /* @__PURE__ */ jsx(
7
+ "div",
8
+ {
9
+ ref,
10
+ className: cx("aspect-ratio", className),
11
+ style: { position: "relative", width: "100%", aspectRatio: String(ratio), ...style },
12
+ ...rest,
13
+ children
14
+ }
15
+ );
16
+ });
17
+ var Separator = React.forwardRef(function Separator2({ orientation = "horizontal", decorative = true, className, ...rest }, ref) {
18
+ const a11y = decorative ? { role: "none" } : { role: "separator", "aria-orientation": orientation };
19
+ return /* @__PURE__ */ jsx(
20
+ "div",
21
+ {
22
+ ref,
23
+ ...a11y,
24
+ className: cx("separator", `separator--${orientation}`, className),
25
+ ...rest
26
+ }
27
+ );
28
+ });
29
+ var ScrollArea = React.forwardRef(function ScrollArea2({ maxHeight, orientation = "vertical", className, style, children, ...rest }, ref) {
30
+ const overflow = orientation === "horizontal" ? { overflowX: "auto", overflowY: "hidden" } : orientation === "both" ? { overflow: "auto" } : { overflowY: "auto", overflowX: "hidden" };
31
+ return /* @__PURE__ */ jsx(
32
+ "div",
33
+ {
34
+ ref,
35
+ className: cx("scroll-area", `scroll-area--${orientation}`, className),
36
+ style: { ...overflow, maxHeight, ...style },
37
+ ...rest,
38
+ children
39
+ }
40
+ );
41
+ });
42
+ function composeRefs(...refs) {
43
+ return (node) => {
44
+ for (const ref of refs) {
45
+ if (typeof ref === "function") ref(node);
46
+ else if (ref != null) ref.current = node;
47
+ }
48
+ };
49
+ }
50
+ function readRef(el) {
51
+ const fromProps = el.props.ref;
52
+ const fromEl = el.ref;
53
+ return fromProps ?? fromEl;
54
+ }
55
+ function mergeProps(slotProps, childProps) {
56
+ const merged = { ...slotProps };
57
+ for (const key of Object.keys(childProps)) {
58
+ const slotValue = slotProps[key];
59
+ const childValue = childProps[key];
60
+ if (/^on[A-Z]/.test(key) && typeof slotValue === "function" && typeof childValue === "function") {
61
+ merged[key] = (...args) => {
62
+ childValue(...args);
63
+ slotValue(...args);
64
+ };
65
+ } else if (key === "className") {
66
+ merged[key] = cx(slotProps.className, childProps.className);
67
+ } else if (key === "style") {
68
+ merged[key] = { ...slotProps.style, ...childProps.style };
69
+ } else {
70
+ merged[key] = childValue !== void 0 ? childValue : slotValue;
71
+ }
72
+ }
73
+ return merged;
74
+ }
75
+ function Slottable({ children }) {
76
+ return /* @__PURE__ */ jsx(Fragment, { children });
77
+ }
78
+ var Slot = React.forwardRef(
79
+ function Slot2({ children, ...slotProps }, ref) {
80
+ const childArray = React.Children.toArray(children);
81
+ const slottable = childArray.find(
82
+ (c) => React.isValidElement(c) && c.type === Slottable
83
+ );
84
+ const target = slottable ? slottable.props.children : children;
85
+ if (!React.isValidElement(target)) return null;
86
+ const element = target;
87
+ const merged = mergeProps(slotProps, element.props);
88
+ const composed = ref ? composeRefs(ref, readRef(element)) : readRef(element);
89
+ merged.ref = composed;
90
+ const newChildren = slottable ? childArray.map((c) => c === slottable ? element.props.children : c) : element.props.children;
91
+ return React.cloneElement(element, merged, ...React.Children.toArray(newChildren));
92
+ }
93
+ );
94
+
95
+ export { AspectRatio, ScrollArea, Separator, Slot, Slottable };
96
+ //# sourceMappingURL=chunk-IEPKSPBX.mjs.map
97
+ //# sourceMappingURL=chunk-IEPKSPBX.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Primitives.tsx"],"names":["AspectRatio","Separator","ScrollArea","Slot"],"mappings":"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","file":"chunk-IEPKSPBX.mjs","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\n\n// ---------- AspectRatio ------------------------------------------------\nexport interface AspectRatioProps extends React.HTMLAttributes<HTMLDivElement> {\n ratio?: number;\n}\n\nexport const AspectRatio = React.forwardRef<HTMLDivElement, AspectRatioProps>(function AspectRatio(\n { ratio = 16 / 9, style, className, children, ...rest },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cx('aspect-ratio', className)}\n style={{ position: 'relative', width: '100%', aspectRatio: String(ratio), ...style }}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\n// ---------- Separator --------------------------------------------------\nexport interface SeparatorProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: 'horizontal' | 'vertical';\n decorative?: boolean;\n}\n\nexport const Separator = React.forwardRef<HTMLDivElement, SeparatorProps>(function Separator(\n { orientation = 'horizontal', decorative = true, className, ...rest },\n ref\n) {\n const a11y = decorative ? { role: 'none' } : { role: 'separator', 'aria-orientation': orientation };\n return (\n <div\n ref={ref}\n {...a11y}\n className={cx('separator', `separator--${orientation}`, className)}\n {...rest}\n />\n );\n});\n\n// ---------- ScrollArea -------------------------------------------------\nexport interface ScrollAreaProps extends React.HTMLAttributes<HTMLDivElement> {\n maxHeight?: number | string;\n orientation?: 'vertical' | 'horizontal' | 'both';\n}\n\nexport const ScrollArea = React.forwardRef<HTMLDivElement, ScrollAreaProps>(function ScrollArea(\n { maxHeight, orientation = 'vertical', className, style, children, ...rest },\n ref\n) {\n const overflow =\n orientation === 'horizontal'\n ? { overflowX: 'auto' as const, overflowY: 'hidden' as const }\n : orientation === 'both'\n ? { overflow: 'auto' as const }\n : { overflowY: 'auto' as const, overflowX: 'hidden' as const };\n return (\n <div\n ref={ref}\n className={cx('scroll-area', `scroll-area--${orientation}`, className)}\n style={{ ...overflow, maxHeight, ...style }}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\n// ---------- Slot (polymorphism: the `asChild` pattern) -----------------\n// Dependency-free reimplementation of the well-known Slot/Slottable pattern.\n// Lets a component render *as* a consumer-provided element (e.g. next/link's\n// <a>) while still injecting its own className, handlers, ref and ARIA.\n\ntype AnyProps = Record<string, unknown>;\n\nfunction composeRefs<T>(...refs: Array<React.Ref<T> | undefined>): React.RefCallback<T> {\n return (node) => {\n for (const ref of refs) {\n if (typeof ref === 'function') ref(node);\n else if (ref != null) (ref as React.MutableRefObject<T | null>).current = node;\n }\n };\n}\n\nfunction readRef(el: React.ReactElement): React.Ref<unknown> | undefined {\n // React 18 exposes ref on the element; React 19 moves it into props.\n const fromProps = (el.props as { ref?: React.Ref<unknown> }).ref;\n const fromEl = (el as { ref?: React.Ref<unknown> }).ref;\n return fromProps ?? fromEl;\n}\n\nfunction mergeProps(slotProps: AnyProps, childProps: AnyProps): AnyProps {\n const merged: AnyProps = { ...slotProps };\n for (const key of Object.keys(childProps)) {\n const slotValue = slotProps[key];\n const childValue = childProps[key];\n if (/^on[A-Z]/.test(key) && typeof slotValue === 'function' && typeof childValue === 'function') {\n // Child's own handler runs first, then the component's.\n merged[key] = (...args: unknown[]) => {\n (childValue as (...a: unknown[]) => unknown)(...args);\n (slotValue as (...a: unknown[]) => unknown)(...args);\n };\n } else if (key === 'className') {\n merged[key] = cx(slotProps.className as string, childProps.className as string);\n } else if (key === 'style') {\n merged[key] = { ...(slotProps.style as object), ...(childProps.style as object) };\n } else {\n merged[key] = childValue !== undefined ? childValue : slotValue;\n }\n }\n return merged;\n}\n\n/**\n * Marks which child of an `asChild` component is the element to merge onto.\n * Siblings (icons, spinners) are preserved as the slotted element's children.\n */\nexport function Slottable({ children }: { children: React.ReactNode }): React.ReactElement {\n return <>{children}</>;\n}\n\nexport interface SlotProps {\n children?: React.ReactNode;\n}\n\nexport const Slot = React.forwardRef<HTMLElement, SlotProps & React.HTMLAttributes<HTMLElement>>(\n function Slot({ children, ...slotProps }, ref) {\n const childArray = React.Children.toArray(children);\n const slottable = childArray.find(\n (c) => React.isValidElement(c) && c.type === Slottable,\n ) as React.ReactElement | undefined;\n\n const target = slottable\n ? (slottable.props as { children?: React.ReactNode }).children\n : children;\n\n if (!React.isValidElement(target)) return null;\n const element = target as React.ReactElement<{ children?: React.ReactNode }>;\n\n const merged = mergeProps(slotProps as AnyProps, element.props as AnyProps);\n const composed = ref ? composeRefs(ref, readRef(element)) : readRef(element);\n (merged as { ref?: React.Ref<unknown> }).ref = composed;\n\n // With Slottable, the component's own siblings replace the marker and\n // become the slotted element's children (its original children last).\n const newChildren = slottable\n ? childArray.map((c) => (c === slottable ? element.props.children : c))\n : element.props.children;\n\n return React.cloneElement(element, merged, ...React.Children.toArray(newChildren));\n },\n);\n"]}
@@ -1,3 +1,4 @@
1
+ import { Slot, Slottable } from './chunk-IEPKSPBX.mjs';
1
2
  import { cx } from './chunk-IEPCH3JB.mjs';
2
3
  import * as React from 'react';
3
4
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -12,20 +13,42 @@ var Button = React.forwardRef(function Button2({
12
13
  className,
13
14
  disabled,
14
15
  children,
16
+ asChild = false,
15
17
  ...rest
16
18
  }, ref) {
19
+ const cls = cx(
20
+ "btn",
21
+ `btn--${variant}`,
22
+ `btn--${size}`,
23
+ fullWidth && "btn--block",
24
+ loading && "is-loading",
25
+ className
26
+ );
27
+ if (asChild) {
28
+ const blocked = disabled || loading;
29
+ return /* @__PURE__ */ jsxs(
30
+ Slot,
31
+ {
32
+ ref,
33
+ className: cls,
34
+ "aria-busy": loading || void 0,
35
+ "aria-disabled": blocked || void 0,
36
+ "data-disabled": blocked || void 0,
37
+ ...rest,
38
+ children: [
39
+ loading && /* @__PURE__ */ jsx("span", { className: "spinner spinner--inverse", "aria-hidden": "true" }),
40
+ !loading && iconLeft,
41
+ /* @__PURE__ */ jsx(Slottable, { children }),
42
+ !loading && iconRight
43
+ ]
44
+ }
45
+ );
46
+ }
17
47
  return /* @__PURE__ */ jsxs(
18
48
  "button",
19
49
  {
20
50
  ref,
21
- className: cx(
22
- "btn",
23
- `btn--${variant}`,
24
- `btn--${size}`,
25
- fullWidth && "btn--block",
26
- loading && "is-loading",
27
- className
28
- ),
51
+ className: cls,
29
52
  disabled: disabled || loading,
30
53
  "aria-busy": loading || void 0,
31
54
  ...rest,
@@ -45,5 +68,5 @@ var ButtonGroup = React.forwardRef(
45
68
  );
46
69
 
47
70
  export { Button, ButtonGroup };
48
- //# sourceMappingURL=chunk-V26K66NP.mjs.map
49
- //# sourceMappingURL=chunk-V26K66NP.mjs.map
71
+ //# sourceMappingURL=chunk-JBUMN6Q4.mjs.map
72
+ //# sourceMappingURL=chunk-JBUMN6Q4.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Button.tsx"],"names":["Button","ButtonGroup"],"mappings":";;;;;AAgCO,IAAM,MAAA,GAAe,KAAA,CAAA,UAAA,CAA2C,SAASA,OAAAA,CAC9E;AAAA,EACE,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,IAAA;AAAA,EACP,OAAA,GAAU,KAAA;AAAA,EACV,QAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,GAAA,GAAM,EAAA;AAAA,IACV,KAAA;AAAA,IACA,QAAQ,OAAO,CAAA,CAAA;AAAA,IACf,QAAQ,IAAI,CAAA,CAAA;AAAA,IACZ,SAAA,IAAa,YAAA;AAAA,IACb,OAAA,IAAW,YAAA;AAAA,IACX;AAAA,GACF;AAEA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,MAAM,UAAU,QAAA,IAAY,OAAA;AAC5B,IAAA,uBACE,IAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,GAAA;AAAA,QACX,aAAW,OAAA,IAAW,MAAA;AAAA,QACtB,iBAAe,OAAA,IAAW,MAAA;AAAA,QAC1B,iBAAe,OAAA,IAAW,MAAA;AAAA,QACzB,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,OAAA,oBAAW,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0BAAA,EAA2B,eAAY,MAAA,EAAO,CAAA;AAAA,UACzE,CAAC,OAAA,IAAW,QAAA;AAAA,0BACb,GAAA,CAAC,aAAW,QAAA,EAAS,CAAA;AAAA,UACpB,CAAC,OAAA,IAAW;AAAA;AAAA;AAAA,KACf;AAAA,EAEJ;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,GAAA;AAAA,MACX,UAAU,QAAA,IAAY,OAAA;AAAA,MACtB,aAAW,OAAA,IAAW,MAAA;AAAA,MACrB,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,OAAA,oBAAW,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0BAAA,EAA2B,eAAY,MAAA,EAAO,CAAA;AAAA,QACzE,CAAC,OAAA,IAAW,QAAA;AAAA,QACZ,QAAA;AAAA,QACA,CAAC,OAAA,IAAW;AAAA;AAAA;AAAA,GACf;AAEJ,CAAC;AAGM,IAAM,WAAA,GAAoB,KAAA,CAAA,UAAA;AAAA,EAC/B,SAASC,aAAY,EAAE,SAAA,EAAW,OAAO,OAAA,EAAS,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AAChE,IAAA,uBAAO,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,IAAA,EAAY,SAAA,EAAW,GAAG,WAAA,EAAa,SAAS,CAAA,EAAI,GAAG,IAAA,EAAM,CAAA;AAAA,EACrF;AACF","file":"chunk-JBUMN6Q4.mjs","sourcesContent":["import * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { Slot, Slottable } from './Primitives';\n\nexport type ButtonVariant =\n | 'primary'\n | 'secondary'\n | 'outline'\n | 'ghost'\n | 'subtle'\n | 'danger'\n | 'success'\n | 'warning'\n | 'link';\n\nexport type ButtonSize = 'sm' | 'md' | 'lg';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n loading?: boolean;\n iconLeft?: React.ReactNode;\n iconRight?: React.ReactNode;\n fullWidth?: boolean;\n /**\n * Render as the provided single child element instead of `<button>`\n * (e.g. `next/link`'s `<a>`). The kit's classes, ref and handlers are\n * merged onto that element; `iconLeft`/`iconRight`/loading are preserved.\n */\n asChild?: boolean;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant = 'primary',\n size = 'md',\n loading = false,\n iconLeft,\n iconRight,\n fullWidth = false,\n className,\n disabled,\n children,\n asChild = false,\n ...rest\n },\n ref\n) {\n const cls = cx(\n 'btn',\n `btn--${variant}`,\n `btn--${size}`,\n fullWidth && 'btn--block',\n loading && 'is-loading',\n className\n );\n\n if (asChild) {\n const blocked = disabled || loading;\n return (\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n className={cls}\n aria-busy={loading || undefined}\n aria-disabled={blocked || undefined}\n data-disabled={blocked || undefined}\n {...rest}\n >\n {loading && <span className=\"spinner spinner--inverse\" aria-hidden=\"true\" />}\n {!loading && iconLeft}\n <Slottable>{children}</Slottable>\n {!loading && iconRight}\n </Slot>\n );\n }\n\n return (\n <button\n ref={ref}\n className={cls}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n {...rest}\n >\n {loading && <span className=\"spinner spinner--inverse\" aria-hidden=\"true\" />}\n {!loading && iconLeft}\n {children}\n {!loading && iconRight}\n </button>\n );\n});\n\n// ---------- ButtonGroup --------------------------------------------------\nexport const ButtonGroup = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function ButtonGroup({ className, role = 'group', ...rest }, ref) {\n return <div ref={ref} role={role} className={cx('btn-group', className)} {...rest} />;\n }\n);\n"]}
@@ -1,6 +1,6 @@
1
- import { Separator } from './chunk-6MEOR4YO.mjs';
2
1
  import { usePopoverPosition } from './chunk-H3PRT76O.mjs';
3
2
  import { Portal } from './chunk-QX5GGPV5.mjs';
3
+ import { Separator } from './chunk-IEPKSPBX.mjs';
4
4
  import { Check } from './chunk-CIBJKJV3.mjs';
5
5
  import { cx } from './chunk-IEPCH3JB.mjs';
6
6
  import * as React from 'react';
@@ -238,5 +238,5 @@ function Stepper({ steps, current, className }) {
238
238
  }
239
239
 
240
240
  export { Container, Divider, Grid, HStack, KeyValue, KeyValueRow, ListGroup, ListGroupItem, Stack, Stepper, Tab, TabList, TabPanel, Table, Tabs, Tooltip, VStack };
241
- //# sourceMappingURL=chunk-7VG64AY7.mjs.map
242
- //# sourceMappingURL=chunk-7VG64AY7.mjs.map
241
+ //# sourceMappingURL=chunk-JWGK5HKF.mjs.map
242
+ //# sourceMappingURL=chunk-JWGK5HKF.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Layout.tsx"],"names":["Table","Divider","Stack","HStack","VStack","ListGroup","ListGroupItem"],"mappings":"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","file":"chunk-7VG64AY7.mjs","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { Check } from './Icons';\nimport { Portal } from './Portal';\nimport { usePopoverPosition } from '../hooks/usePopoverPosition';\nimport { Separator } from './Primitives';\n\n// ---------- Tabs ---------------------------------------------------------\ninterface TabsContextValue {\n value: string;\n setValue: (v: string) => void;\n}\nconst TabsContext = React.createContext<TabsContextValue | null>(null);\n\nexport interface TabsProps {\n value?: string;\n defaultValue?: string;\n onChange?: (v: string) => void;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function Tabs({ value, defaultValue, onChange, children, className }: TabsProps) {\n const [internal, setInternal] = React.useState(defaultValue ?? '');\n const v = value ?? internal;\n const setV = (next: string) => {\n if (value === undefined) setInternal(next);\n onChange?.(next);\n };\n return (\n <TabsContext.Provider value={{ value: v, setValue: setV }}>\n <div className={cx('tabs', className)}>{children}</div>\n </TabsContext.Provider>\n );\n}\n\nexport function TabList({ children, className }: { children: React.ReactNode; className?: string }) {\n return <div role=\"tablist\" className={cx('tabs__list', className)}>{children}</div>;\n}\n\nexport interface TabProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string;\n}\n\nexport function Tab({ value, className, children, ...rest }: TabProps) {\n const ctx = React.useContext(TabsContext);\n if (!ctx) throw new Error('<Tab> must be used inside <Tabs>');\n const active = ctx.value === value;\n return (\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={active}\n className={cx('tabs__tab', active && 'is-active', className)}\n onClick={() => ctx.setValue(value)}\n {...rest}\n >\n {children}\n </button>\n );\n}\n\nexport function TabPanel({ value, children, className }: { value: string; children: React.ReactNode; className?: string }) {\n const ctx = React.useContext(TabsContext);\n if (!ctx) throw new Error('<TabPanel> must be used inside <Tabs>');\n if (ctx.value !== value) return null;\n return <div role=\"tabpanel\" className={cx('tabs__panel', className)}>{children}</div>;\n}\n\n// ---------- Table --------------------------------------------------------\nexport const Table = React.forwardRef<HTMLTableElement, React.TableHTMLAttributes<HTMLTableElement>>(\n function Table({ className, ...rest }, ref) {\n return (\n <div className=\"table-wrap\">\n <table ref={ref} className={cx('table', className)} {...rest} />\n </div>\n );\n }\n);\n\n// ---------- Tooltip (CSS hover) ------------------------------------------\nexport interface TooltipProps {\n label: React.ReactNode;\n children: React.ReactElement;\n side?: 'top' | 'bottom' | 'left' | 'right';\n}\n\nexport function Tooltip({ label, children, side = 'top' }: TooltipProps) {\n const [open, setOpen] = React.useState(false);\n const wrapRef = React.useRef<HTMLSpanElement>(null);\n const bubbleRef = React.useRef<HTMLSpanElement>(null);\n const reactId = React.useId();\n const bubbleId = `${reactId}-tooltip`;\n const openTimer = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const closeTimer = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clear = () => {\n if (openTimer.current) clearTimeout(openTimer.current);\n if (closeTimer.current) clearTimeout(closeTimer.current);\n };\n const show = () => {\n clear();\n openTimer.current = setTimeout(() => setOpen(true), 150);\n };\n const hide = () => {\n clear();\n closeTimer.current = setTimeout(() => setOpen(false), 80);\n };\n\n React.useEffect(() => () => clear(), []);\n\n React.useEffect(() => {\n if (!open) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') setOpen(false);\n };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [open]);\n\n const pos = usePopoverPosition(wrapRef, bubbleRef, {\n open,\n side,\n align: 'center',\n offset: 8,\n });\n\n const child = React.cloneElement(children, {\n 'aria-describedby': open ? bubbleId : children.props['aria-describedby'],\n });\n\n return (\n <span\n ref={wrapRef}\n className={cx('tooltip', `tooltip--${side}`)}\n onMouseEnter={show}\n onMouseLeave={hide}\n onFocus={show}\n onBlur={hide}\n >\n {child}\n {open && (\n <Portal>\n <span\n ref={bubbleRef}\n id={bubbleId}\n role=\"tooltip\"\n className={cx('tooltip__bubble', 'is-floating')}\n style={{\n position: 'absolute',\n top: pos.top,\n left: pos.left,\n opacity: pos.ready ? 1 : 0,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n >\n {label}\n </span>\n </Portal>\n )}\n </span>\n );\n}\n\n// ---------- Divider ------------------------------------------------------\nexport interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: 'horizontal' | 'vertical';\n}\n\n/**\n * @deprecated Use `Separator` instead. `Divider` is a non-breaking alias kept\n * for existing consumers: it delegates to `Separator` with `decorative={false}`\n * (preserving the original `role=\"separator\"` semantics) and keeps emitting the\n * legacy `divider` / `divider--vertical` classes so styling is unchanged. New\n * code should import `Separator`.\n */\nexport const Divider = React.forwardRef<HTMLDivElement, DividerProps>(function Divider(\n { orientation = 'horizontal', className, ...rest },\n ref\n) {\n return (\n <Separator\n ref={ref}\n orientation={orientation}\n decorative={false}\n className={cx('divider', orientation === 'vertical' && 'divider--vertical', className)}\n {...rest}\n />\n );\n});\n\n// ---------- Stack / HStack / VStack -------------------------------------\ntype SpaceToken = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24;\n\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\n direction?: 'row' | 'column';\n gap?: SpaceToken;\n align?: React.CSSProperties['alignItems'];\n justify?: React.CSSProperties['justifyContent'];\n wrap?: boolean;\n inline?: boolean;\n}\n\nexport const Stack = React.forwardRef<HTMLDivElement, StackProps>(function Stack(\n { direction = 'column', gap = 4, align, justify, wrap, inline, className, style, ...rest },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cx('stack', className)}\n style={{\n display: inline ? 'inline-flex' : 'flex',\n flexDirection: direction,\n gap: `var(--space-${gap})`,\n alignItems: align,\n justifyContent: justify,\n flexWrap: wrap ? 'wrap' : undefined,\n ...style,\n }}\n {...rest}\n />\n );\n});\n\nexport const HStack = React.forwardRef<HTMLDivElement, Omit<StackProps, 'direction'>>(\n function HStack(props, ref) {\n return <Stack ref={ref} direction=\"row\" align={props.align ?? 'center'} {...props} />;\n }\n);\n\nexport const VStack = React.forwardRef<HTMLDivElement, Omit<StackProps, 'direction'>>(\n function VStack(props, ref) {\n return <Stack ref={ref} direction=\"column\" {...props} />;\n }\n);\n\n// ---------- Container ----------------------------------------------------\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n}\n\nconst CONTAINER_MAX = { sm: 640, md: 768, lg: 1024, xl: 1280, full: '100%' };\n\nexport function Container({ size = 'lg', className, style, ...rest }: ContainerProps) {\n return (\n <div\n className={cx('container', `container--${size}`, className)}\n style={{\n width: '100%',\n maxWidth: CONTAINER_MAX[size],\n marginInline: 'auto',\n paddingInline: 'var(--space-4)',\n ...style,\n }}\n {...rest}\n />\n );\n}\n\n// ---------- Grid ---------------------------------------------------------\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n columns?: number | string;\n gap?: SpaceToken;\n minColWidth?: number | string;\n}\n\nexport function Grid({ columns, gap = 4, minColWidth, className, style, ...rest }: GridProps) {\n const tpl = minColWidth\n ? `repeat(auto-fit, minmax(${typeof minColWidth === 'number' ? `${minColWidth}px` : minColWidth}, 1fr))`\n : typeof columns === 'number'\n ? `repeat(${columns}, minmax(0, 1fr))`\n : columns ?? 'repeat(12, minmax(0, 1fr))';\n return (\n <div\n className={cx('grid', className)}\n style={{\n display: 'grid',\n gridTemplateColumns: tpl,\n gap: `var(--space-${gap})`,\n ...style,\n }}\n {...rest}\n />\n );\n}\n\n// ---------- KeyValue ----------------------------------------------------\nexport interface KeyValueProps extends React.HTMLAttributes<HTMLDListElement> {\n /** Override del ancho de la columna de keys (default 200px) */\n keyWidth?: number | string;\n}\n\nexport function KeyValue({ keyWidth, className, style, ...rest }: KeyValueProps) {\n return (\n <dl\n className={cx('kv', className)}\n style={keyWidth ? { gridTemplateColumns: `${typeof keyWidth === 'number' ? `${keyWidth}px` : keyWidth} 1fr`, ...style } : style}\n {...rest}\n />\n );\n}\n\nexport interface KeyValueRowProps {\n label: React.ReactNode;\n children: React.ReactNode;\n}\n\nexport function KeyValueRow({ label, children }: KeyValueRowProps) {\n return (\n <>\n <dt className=\"kv__k\">{label}</dt>\n <dd className=\"kv__v\">{children}</dd>\n </>\n );\n}\n\n// ---------- ListGroup ---------------------------------------------------\nexport const ListGroup = React.forwardRef<HTMLUListElement, React.HTMLAttributes<HTMLUListElement>>(\n function ListGroup({ className, ...rest }, ref) {\n return <ul ref={ref} className={cx('list-group', className)} {...rest} />;\n }\n);\n\nexport interface ListGroupItemProps extends React.LiHTMLAttributes<HTMLLIElement> {\n interactive?: boolean;\n}\n\nexport const ListGroupItem = React.forwardRef<HTMLLIElement, ListGroupItemProps>(\n function ListGroupItem({ interactive, className, ...rest }, ref) {\n return (\n <li\n ref={ref}\n className={cx('list-group__item', interactive && 'list-group__item--interactive', className)}\n {...rest}\n />\n );\n }\n);\n\n// ---------- Stepper ------------------------------------------------------\nexport interface StepperProps {\n steps: Array<{ label: string; description?: string }>;\n current: number;\n className?: string;\n}\n\nexport function Stepper({ steps, current, className }: StepperProps) {\n return (\n <ol className={cx('stepper', className)}>\n {steps.map((s, i) => {\n const state = i < current ? 'is-done' : i === current ? 'is-current' : '';\n return (\n <li key={i} className={cx('stepper__item', state)}>\n <span className=\"stepper__circle\">{i < current ? <Check size={16} /> : i + 1}</span>\n <div>\n <div className=\"stepper__label\">{s.label}</div>\n {s.description && <div className=\"stepper__desc\">{s.description}</div>}\n </div>\n </li>\n );\n })}\n </ol>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/components/Layout.tsx"],"names":["Table","Divider","Stack","HStack","VStack","ListGroup","ListGroupItem"],"mappings":";;;;;;;;AAaA,IAAM,WAAA,GAAoB,oBAAuC,IAAI,CAAA;AAU9D,SAAS,KAAK,EAAE,KAAA,EAAO,cAAc,QAAA,EAAU,QAAA,EAAU,WAAU,EAAc;AACtF,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAU,KAAA,CAAA,QAAA,CAAS,gBAAgB,EAAE,CAAA;AACjE,EAAA,MAAM,IAAI,KAAA,IAAS,QAAA;AACnB,EAAA,MAAM,IAAA,GAAO,CAAC,IAAA,KAAiB;AAC7B,IAAA,IAAI,KAAA,KAAU,MAAA,EAAW,WAAA,CAAY,IAAI,CAAA;AACzC,IAAA,QAAA,GAAW,IAAI,CAAA;AAAA,EACjB,CAAA;AACA,EAAA,2BACG,WAAA,CAAY,QAAA,EAAZ,EAAqB,KAAA,EAAO,EAAE,OAAO,CAAA,EAAG,QAAA,EAAU,MAAK,EACtD,QAAA,kBAAA,GAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,QAAQ,SAAS,CAAA,EAAI,UAAS,CAAA,EACnD,CAAA;AAEJ;AAEO,SAAS,OAAA,CAAQ,EAAE,QAAA,EAAU,SAAA,EAAU,EAAsD;AAClG,EAAA,uBAAO,GAAA,CAAC,SAAI,IAAA,EAAK,SAAA,EAAU,WAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA,EAAI,QAAA,EAAS,CAAA;AAC/E;AAMO,SAAS,IAAI,EAAE,KAAA,EAAO,WAAW,QAAA,EAAU,GAAG,MAAK,EAAa;AACrE,EAAA,MAAM,GAAA,GAAY,iBAAW,WAAW,CAAA;AACxC,EAAA,IAAI,CAAC,GAAA,EAAK,MAAM,IAAI,MAAM,kCAAkC,CAAA;AAC5D,EAAA,MAAM,MAAA,GAAS,IAAI,KAAA,KAAU,KAAA;AAC7B,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,IAAA,EAAK,KAAA;AAAA,MACL,eAAA,EAAe,MAAA;AAAA,MACf,SAAA,EAAW,EAAA,CAAG,WAAA,EAAa,MAAA,IAAU,aAAa,SAAS,CAAA;AAAA,MAC3D,OAAA,EAAS,MAAM,GAAA,CAAI,QAAA,CAAS,KAAK,CAAA;AAAA,MAChC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AAEO,SAAS,QAAA,CAAS,EAAE,KAAA,EAAO,QAAA,EAAU,WAAU,EAAqE;AACzH,EAAA,MAAM,GAAA,GAAY,iBAAW,WAAW,CAAA;AACxC,EAAA,IAAI,CAAC,GAAA,EAAK,MAAM,IAAI,MAAM,uCAAuC,CAAA;AACjE,EAAA,IAAI,GAAA,CAAI,KAAA,KAAU,KAAA,EAAO,OAAO,IAAA;AAChC,EAAA,uBAAO,GAAA,CAAC,SAAI,IAAA,EAAK,UAAA,EAAW,WAAW,EAAA,CAAG,aAAA,EAAe,SAAS,CAAA,EAAI,QAAA,EAAS,CAAA;AACjF;AAGO,IAAM,KAAA,GAAc,KAAA,CAAA,UAAA;AAAA,EACzB,SAASA,MAAAA,CAAM,EAAE,WAAW,GAAG,IAAA,IAAQ,GAAA,EAAK;AAC1C,IAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACb,8BAAC,OAAA,EAAA,EAAM,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,SAAS,CAAA,EAAI,GAAG,MAAM,CAAA,EAChE,CAAA;AAAA,EAEJ;AACF;AASO,SAAS,QAAQ,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,GAAO,OAAM,EAAiB;AACvE,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAU,eAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,OAAA,GAAgB,aAAwB,IAAI,CAAA;AAClD,EAAA,MAAM,SAAA,GAAkB,aAAwB,IAAI,CAAA;AACpD,EAAA,MAAM,UAAgB,KAAA,CAAA,KAAA,EAAM;AAC5B,EAAA,MAAM,QAAA,GAAW,GAAG,OAAO,CAAA,QAAA,CAAA;AAC3B,EAAA,MAAM,SAAA,GAAkB,aAA6C,IAAI,CAAA;AACzE,EAAA,MAAM,UAAA,GAAmB,aAA6C,IAAI,CAAA;AAE1E,EAAA,MAAM,QAAQ,MAAM;AAClB,IAAA,IAAI,SAAA,CAAU,OAAA,EAAS,YAAA,CAAa,SAAA,CAAU,OAAO,CAAA;AACrD,IAAA,IAAI,UAAA,CAAW,OAAA,EAAS,YAAA,CAAa,UAAA,CAAW,OAAO,CAAA;AAAA,EACzD,CAAA;AACA,EAAA,MAAM,OAAO,MAAM;AACjB,IAAA,KAAA,EAAM;AACN,IAAA,SAAA,CAAU,UAAU,UAAA,CAAW,MAAM,OAAA,CAAQ,IAAI,GAAG,GAAG,CAAA;AAAA,EACzD,CAAA;AACA,EAAA,MAAM,OAAO,MAAM;AACjB,IAAA,KAAA,EAAM;AACN,IAAA,UAAA,CAAW,UAAU,UAAA,CAAW,MAAM,OAAA,CAAQ,KAAK,GAAG,EAAE,CAAA;AAAA,EAC1D,CAAA;AAEA,EAAM,gBAAU,MAAM,MAAM,KAAA,EAAM,EAAG,EAAE,CAAA;AAEvC,EAAM,gBAAU,MAAM;AACpB,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,KAAA,GAAQ,CAAC,CAAA,KAAqB;AAClC,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU,OAAA,CAAQ,KAAK,CAAA;AAAA,IACvC,CAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,KAAK,CAAA;AAC1C,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,KAAK,CAAA;AAAA,EAC5D,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,GAAA,GAAM,kBAAA,CAAmB,OAAA,EAAS,SAAA,EAAW;AAAA,IACjD,IAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA,EAAO,QAAA;AAAA,IACP,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,MAAM,KAAA,GAAc,mBAAa,QAAA,EAAU;AAAA,IACzC,kBAAA,EAAoB,IAAA,GAAO,QAAA,GAAW,QAAA,CAAS,MAAM,kBAAkB;AAAA,GACxE,CAAA;AAED,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,OAAA;AAAA,MACL,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,CAAA,SAAA,EAAY,IAAI,CAAA,CAAE,CAAA;AAAA,MAC3C,YAAA,EAAc,IAAA;AAAA,MACd,YAAA,EAAc,IAAA;AAAA,MACd,OAAA,EAAS,IAAA;AAAA,MACT,MAAA,EAAQ,IAAA;AAAA,MAEP,QAAA,EAAA;AAAA,QAAA,KAAA;AAAA,QACA,IAAA,wBACE,MAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,SAAA;AAAA,YACL,EAAA,EAAI,QAAA;AAAA,YACJ,IAAA,EAAK,SAAA;AAAA,YACL,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAmB,aAAa,CAAA;AAAA,YAC9C,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,UAAA;AAAA,cACV,KAAK,GAAA,CAAI,GAAA;AAAA,cACT,MAAM,GAAA,CAAI,IAAA;AAAA,cACV,OAAA,EAAS,GAAA,CAAI,KAAA,GAAQ,CAAA,GAAI,CAAA;AAAA,cACzB,UAAA,EAAY,GAAA,CAAI,KAAA,GAAQ,SAAA,GAAY;AAAA,aACtC;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACH,EACF;AAAA;AAAA;AAAA,GAEJ;AAEJ;AAcO,IAAM,OAAA,GAAgB,KAAA,CAAA,UAAA,CAAyC,SAASC,QAAAA,CAC7E,EAAE,WAAA,GAAc,YAAA,EAAc,SAAA,EAAW,GAAG,IAAA,EAAK,EACjD,GAAA,EACA;AACA,EAAA,uBACE,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA,EAAY,KAAA;AAAA,MACZ,WAAW,EAAA,CAAG,SAAA,EAAW,WAAA,KAAgB,UAAA,IAAc,qBAAqB,SAAS,CAAA;AAAA,MACpF,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AAcM,IAAM,QAAc,KAAA,CAAA,UAAA,CAAuC,SAASC,OACzE,EAAE,SAAA,GAAY,UAAU,GAAA,GAAM,CAAA,EAAG,KAAA,EAAO,OAAA,EAAS,MAAM,MAAA,EAAQ,SAAA,EAAW,OAAO,GAAG,IAAA,IACpF,GAAA,EACA;AACA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,SAAS,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,SAAS,aAAA,GAAgB,MAAA;AAAA,QAClC,aAAA,EAAe,SAAA;AAAA,QACf,GAAA,EAAK,eAAe,GAAG,CAAA,CAAA,CAAA;AAAA,QACvB,UAAA,EAAY,KAAA;AAAA,QACZ,cAAA,EAAgB,OAAA;AAAA,QAChB,QAAA,EAAU,OAAO,MAAA,GAAS,MAAA;AAAA,QAC1B,GAAG;AAAA,OACL;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AAEM,IAAM,MAAA,GAAe,KAAA,CAAA,UAAA;AAAA,EAC1B,SAASC,OAAAA,CAAO,KAAA,EAAO,GAAA,EAAK;AAC1B,IAAA,uBAAO,GAAA,CAAC,KAAA,EAAA,EAAM,GAAA,EAAU,SAAA,EAAU,KAAA,EAAM,OAAO,KAAA,CAAM,KAAA,IAAS,QAAA,EAAW,GAAG,KAAA,EAAO,CAAA;AAAA,EACrF;AACF;AAEO,IAAM,MAAA,GAAe,KAAA,CAAA,UAAA;AAAA,EAC1B,SAASC,OAAAA,CAAO,KAAA,EAAO,GAAA,EAAK;AAC1B,IAAA,2BAAQ,KAAA,EAAA,EAAM,GAAA,EAAU,SAAA,EAAU,QAAA,EAAU,GAAG,KAAA,EAAO,CAAA;AAAA,EACxD;AACF;AAOA,IAAM,aAAA,GAAgB,EAAE,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,IAAA,EAAM,MAAA,EAAO;AAEpE,SAAS,SAAA,CAAU,EAAE,IAAA,GAAO,IAAA,EAAM,WAAW,KAAA,EAAO,GAAG,MAAK,EAAmB;AACpF,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,EAAA,CAAG,WAAA,EAAa,CAAA,WAAA,EAAc,IAAI,IAAI,SAAS,CAAA;AAAA,MAC1D,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,MAAA;AAAA,QACP,QAAA,EAAU,cAAc,IAAI,CAAA;AAAA,QAC5B,YAAA,EAAc,MAAA;AAAA,QACd,aAAA,EAAe,gBAAA;AAAA,QACf,GAAG;AAAA,OACL;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AASO,SAAS,IAAA,CAAK,EAAE,OAAA,EAAS,GAAA,GAAM,CAAA,EAAG,aAAa,SAAA,EAAW,KAAA,EAAO,GAAG,IAAA,EAAK,EAAc;AAC5F,EAAA,MAAM,MAAM,WAAA,GACR,CAAA,wBAAA,EAA2B,OAAO,WAAA,KAAgB,WAAW,CAAA,EAAG,WAAW,CAAA,EAAA,CAAA,GAAO,WAAW,YAC7F,OAAO,OAAA,KAAY,WACjB,CAAA,OAAA,EAAU,OAAO,sBACjB,OAAA,IAAW,4BAAA;AACjB,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,SAAS,CAAA;AAAA,MAC/B,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,MAAA;AAAA,QACT,mBAAA,EAAqB,GAAA;AAAA,QACrB,GAAA,EAAK,eAAe,GAAG,CAAA,CAAA,CAAA;AAAA,QACvB,GAAG;AAAA,OACL;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAQO,SAAS,SAAS,EAAE,QAAA,EAAU,WAAW,KAAA,EAAO,GAAG,MAAK,EAAkB;AAC/E,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,SAAS,CAAA;AAAA,MAC7B,KAAA,EAAO,QAAA,GAAW,EAAE,mBAAA,EAAqB,GAAG,OAAO,QAAA,KAAa,QAAA,GAAW,CAAA,EAAG,QAAQ,CAAA,EAAA,CAAA,GAAO,QAAQ,CAAA,IAAA,CAAA,EAAQ,GAAG,OAAM,GAAI,KAAA;AAAA,MACzH,GAAG;AAAA;AAAA,GACN;AAEJ;AAOO,SAAS,WAAA,CAAY,EAAE,KAAA,EAAO,QAAA,EAAS,EAAqB;AACjE,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,OAAA,EAAS,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBAC7B,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,OAAA,EAAS,QAAA,EAAS;AAAA,GAAA,EAClC,CAAA;AAEJ;AAGO,IAAM,SAAA,GAAkB,KAAA,CAAA,UAAA;AAAA,EAC7B,SAASC,UAAAA,CAAU,EAAE,WAAW,GAAG,IAAA,IAAQ,GAAA,EAAK;AAC9C,IAAA,uBAAO,GAAA,CAAC,QAAG,GAAA,EAAU,SAAA,EAAW,GAAG,YAAA,EAAc,SAAS,CAAA,EAAI,GAAG,IAAA,EAAM,CAAA;AAAA,EACzE;AACF;AAMO,IAAM,aAAA,GAAsB,KAAA,CAAA,UAAA;AAAA,EACjC,SAASC,eAAc,EAAE,WAAA,EAAa,WAAW,GAAG,IAAA,IAAQ,GAAA,EAAK;AAC/D,IAAA,uBACE,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,kBAAA,EAAoB,WAAA,IAAe,iCAAiC,SAAS,CAAA;AAAA,QAC1F,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AASO,SAAS,OAAA,CAAQ,EAAE,KAAA,EAAO,OAAA,EAAS,WAAU,EAAiB;AACnE,EAAA,uBACE,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,SAAS,CAAA,EACnC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM;AACnB,IAAA,MAAM,QAAQ,CAAA,GAAI,OAAA,GAAU,SAAA,GAAY,CAAA,KAAM,UAAU,YAAA,GAAe,EAAA;AACvE,IAAA,4BACG,IAAA,EAAA,EAAW,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,KAAK,CAAA,EAC9C,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iBAAA,EAAmB,QAAA,EAAA,CAAA,GAAI,OAAA,mBAAU,GAAA,CAAC,KAAA,EAAA,EAAM,IAAA,EAAM,EAAA,EAAI,CAAA,GAAK,CAAA,GAAI,CAAA,EAAE,CAAA;AAAA,2BAC5E,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EAAkB,QAAA,EAAA,CAAA,CAAE,KAAA,EAAM,CAAA;AAAA,QACxC,EAAE,WAAA,oBAAe,GAAA,CAAC,SAAI,SAAA,EAAU,eAAA,EAAiB,YAAE,WAAA,EAAY;AAAA,OAAA,EAClE;AAAA,KAAA,EAAA,EALO,CAMT,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ","file":"chunk-JWGK5HKF.mjs","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { Check } from './Icons';\nimport { Portal } from './Portal';\nimport { usePopoverPosition } from '../hooks/usePopoverPosition';\nimport { Separator } from './Primitives';\n\n// ---------- Tabs ---------------------------------------------------------\ninterface TabsContextValue {\n value: string;\n setValue: (v: string) => void;\n}\nconst TabsContext = React.createContext<TabsContextValue | null>(null);\n\nexport interface TabsProps {\n value?: string;\n defaultValue?: string;\n onChange?: (v: string) => void;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function Tabs({ value, defaultValue, onChange, children, className }: TabsProps) {\n const [internal, setInternal] = React.useState(defaultValue ?? '');\n const v = value ?? internal;\n const setV = (next: string) => {\n if (value === undefined) setInternal(next);\n onChange?.(next);\n };\n return (\n <TabsContext.Provider value={{ value: v, setValue: setV }}>\n <div className={cx('tabs', className)}>{children}</div>\n </TabsContext.Provider>\n );\n}\n\nexport function TabList({ children, className }: { children: React.ReactNode; className?: string }) {\n return <div role=\"tablist\" className={cx('tabs__list', className)}>{children}</div>;\n}\n\nexport interface TabProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string;\n}\n\nexport function Tab({ value, className, children, ...rest }: TabProps) {\n const ctx = React.useContext(TabsContext);\n if (!ctx) throw new Error('<Tab> must be used inside <Tabs>');\n const active = ctx.value === value;\n return (\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={active}\n className={cx('tabs__tab', active && 'is-active', className)}\n onClick={() => ctx.setValue(value)}\n {...rest}\n >\n {children}\n </button>\n );\n}\n\nexport function TabPanel({ value, children, className }: { value: string; children: React.ReactNode; className?: string }) {\n const ctx = React.useContext(TabsContext);\n if (!ctx) throw new Error('<TabPanel> must be used inside <Tabs>');\n if (ctx.value !== value) return null;\n return <div role=\"tabpanel\" className={cx('tabs__panel', className)}>{children}</div>;\n}\n\n// ---------- Table --------------------------------------------------------\nexport const Table = React.forwardRef<HTMLTableElement, React.TableHTMLAttributes<HTMLTableElement>>(\n function Table({ className, ...rest }, ref) {\n return (\n <div className=\"table-wrap\">\n <table ref={ref} className={cx('table', className)} {...rest} />\n </div>\n );\n }\n);\n\n// ---------- Tooltip (CSS hover) ------------------------------------------\nexport interface TooltipProps {\n label: React.ReactNode;\n children: React.ReactElement;\n side?: 'top' | 'bottom' | 'left' | 'right';\n}\n\nexport function Tooltip({ label, children, side = 'top' }: TooltipProps) {\n const [open, setOpen] = React.useState(false);\n const wrapRef = React.useRef<HTMLSpanElement>(null);\n const bubbleRef = React.useRef<HTMLSpanElement>(null);\n const reactId = React.useId();\n const bubbleId = `${reactId}-tooltip`;\n const openTimer = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const closeTimer = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clear = () => {\n if (openTimer.current) clearTimeout(openTimer.current);\n if (closeTimer.current) clearTimeout(closeTimer.current);\n };\n const show = () => {\n clear();\n openTimer.current = setTimeout(() => setOpen(true), 150);\n };\n const hide = () => {\n clear();\n closeTimer.current = setTimeout(() => setOpen(false), 80);\n };\n\n React.useEffect(() => () => clear(), []);\n\n React.useEffect(() => {\n if (!open) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') setOpen(false);\n };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [open]);\n\n const pos = usePopoverPosition(wrapRef, bubbleRef, {\n open,\n side,\n align: 'center',\n offset: 8,\n });\n\n const child = React.cloneElement(children, {\n 'aria-describedby': open ? bubbleId : children.props['aria-describedby'],\n });\n\n return (\n <span\n ref={wrapRef}\n className={cx('tooltip', `tooltip--${side}`)}\n onMouseEnter={show}\n onMouseLeave={hide}\n onFocus={show}\n onBlur={hide}\n >\n {child}\n {open && (\n <Portal>\n <span\n ref={bubbleRef}\n id={bubbleId}\n role=\"tooltip\"\n className={cx('tooltip__bubble', 'is-floating')}\n style={{\n position: 'absolute',\n top: pos.top,\n left: pos.left,\n opacity: pos.ready ? 1 : 0,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n >\n {label}\n </span>\n </Portal>\n )}\n </span>\n );\n}\n\n// ---------- Divider ------------------------------------------------------\nexport interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: 'horizontal' | 'vertical';\n}\n\n/**\n * @deprecated Use `Separator` instead. `Divider` is a non-breaking alias kept\n * for existing consumers: it delegates to `Separator` with `decorative={false}`\n * (preserving the original `role=\"separator\"` semantics) and keeps emitting the\n * legacy `divider` / `divider--vertical` classes so styling is unchanged. New\n * code should import `Separator`.\n */\nexport const Divider = React.forwardRef<HTMLDivElement, DividerProps>(function Divider(\n { orientation = 'horizontal', className, ...rest },\n ref\n) {\n return (\n <Separator\n ref={ref}\n orientation={orientation}\n decorative={false}\n className={cx('divider', orientation === 'vertical' && 'divider--vertical', className)}\n {...rest}\n />\n );\n});\n\n// ---------- Stack / HStack / VStack -------------------------------------\ntype SpaceToken = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24;\n\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\n direction?: 'row' | 'column';\n gap?: SpaceToken;\n align?: React.CSSProperties['alignItems'];\n justify?: React.CSSProperties['justifyContent'];\n wrap?: boolean;\n inline?: boolean;\n}\n\nexport const Stack = React.forwardRef<HTMLDivElement, StackProps>(function Stack(\n { direction = 'column', gap = 4, align, justify, wrap, inline, className, style, ...rest },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cx('stack', className)}\n style={{\n display: inline ? 'inline-flex' : 'flex',\n flexDirection: direction,\n gap: `var(--space-${gap})`,\n alignItems: align,\n justifyContent: justify,\n flexWrap: wrap ? 'wrap' : undefined,\n ...style,\n }}\n {...rest}\n />\n );\n});\n\nexport const HStack = React.forwardRef<HTMLDivElement, Omit<StackProps, 'direction'>>(\n function HStack(props, ref) {\n return <Stack ref={ref} direction=\"row\" align={props.align ?? 'center'} {...props} />;\n }\n);\n\nexport const VStack = React.forwardRef<HTMLDivElement, Omit<StackProps, 'direction'>>(\n function VStack(props, ref) {\n return <Stack ref={ref} direction=\"column\" {...props} />;\n }\n);\n\n// ---------- Container ----------------------------------------------------\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n}\n\nconst CONTAINER_MAX = { sm: 640, md: 768, lg: 1024, xl: 1280, full: '100%' };\n\nexport function Container({ size = 'lg', className, style, ...rest }: ContainerProps) {\n return (\n <div\n className={cx('container', `container--${size}`, className)}\n style={{\n width: '100%',\n maxWidth: CONTAINER_MAX[size],\n marginInline: 'auto',\n paddingInline: 'var(--space-4)',\n ...style,\n }}\n {...rest}\n />\n );\n}\n\n// ---------- Grid ---------------------------------------------------------\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n columns?: number | string;\n gap?: SpaceToken;\n minColWidth?: number | string;\n}\n\nexport function Grid({ columns, gap = 4, minColWidth, className, style, ...rest }: GridProps) {\n const tpl = minColWidth\n ? `repeat(auto-fit, minmax(${typeof minColWidth === 'number' ? `${minColWidth}px` : minColWidth}, 1fr))`\n : typeof columns === 'number'\n ? `repeat(${columns}, minmax(0, 1fr))`\n : columns ?? 'repeat(12, minmax(0, 1fr))';\n return (\n <div\n className={cx('grid', className)}\n style={{\n display: 'grid',\n gridTemplateColumns: tpl,\n gap: `var(--space-${gap})`,\n ...style,\n }}\n {...rest}\n />\n );\n}\n\n// ---------- KeyValue ----------------------------------------------------\nexport interface KeyValueProps extends React.HTMLAttributes<HTMLDListElement> {\n /** Override del ancho de la columna de keys (default 200px) */\n keyWidth?: number | string;\n}\n\nexport function KeyValue({ keyWidth, className, style, ...rest }: KeyValueProps) {\n return (\n <dl\n className={cx('kv', className)}\n style={keyWidth ? { gridTemplateColumns: `${typeof keyWidth === 'number' ? `${keyWidth}px` : keyWidth} 1fr`, ...style } : style}\n {...rest}\n />\n );\n}\n\nexport interface KeyValueRowProps {\n label: React.ReactNode;\n children: React.ReactNode;\n}\n\nexport function KeyValueRow({ label, children }: KeyValueRowProps) {\n return (\n <>\n <dt className=\"kv__k\">{label}</dt>\n <dd className=\"kv__v\">{children}</dd>\n </>\n );\n}\n\n// ---------- ListGroup ---------------------------------------------------\nexport const ListGroup = React.forwardRef<HTMLUListElement, React.HTMLAttributes<HTMLUListElement>>(\n function ListGroup({ className, ...rest }, ref) {\n return <ul ref={ref} className={cx('list-group', className)} {...rest} />;\n }\n);\n\nexport interface ListGroupItemProps extends React.LiHTMLAttributes<HTMLLIElement> {\n interactive?: boolean;\n}\n\nexport const ListGroupItem = React.forwardRef<HTMLLIElement, ListGroupItemProps>(\n function ListGroupItem({ interactive, className, ...rest }, ref) {\n return (\n <li\n ref={ref}\n className={cx('list-group__item', interactive && 'list-group__item--interactive', className)}\n {...rest}\n />\n );\n }\n);\n\n// ---------- Stepper ------------------------------------------------------\nexport interface StepperProps {\n steps: Array<{ label: string; description?: string }>;\n current: number;\n className?: string;\n}\n\nexport function Stepper({ steps, current, className }: StepperProps) {\n return (\n <ol className={cx('stepper', className)}>\n {steps.map((s, i) => {\n const state = i < current ? 'is-done' : i === current ? 'is-current' : '';\n return (\n <li key={i} className={cx('stepper__item', state)}>\n <span className=\"stepper__circle\">{i < current ? <Check size={16} /> : i + 1}</span>\n <div>\n <div className=\"stepper__label\">{s.label}</div>\n {s.description && <div className=\"stepper__desc\">{s.description}</div>}\n </div>\n </li>\n );\n })}\n </ol>\n );\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkTEQ67JKX_js = require('./chunk-TEQ67JKX.js');
4
+ var chunkEUB4PHPI_js = require('./chunk-EUB4PHPI.js');
4
5
  var chunkRQOTH7I7_js = require('./chunk-RQOTH7I7.js');
5
6
  var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
6
7
  var React = require('react');
@@ -26,20 +27,17 @@ function _interopNamespace(e) {
26
27
 
27
28
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
28
29
 
29
- var Card = React__namespace.forwardRef(function Card2({ interactive, accent, className, ...rest }, ref) {
30
- return /* @__PURE__ */ jsxRuntime.jsx(
31
- "div",
32
- {
33
- ref,
34
- className: chunkPASF6T4H_js.cx(
35
- "card",
36
- interactive && "card--interactive",
37
- accent && `card--accent-${accent}`,
38
- className
39
- ),
40
- ...rest
41
- }
30
+ var Card = React__namespace.forwardRef(function Card2({ interactive, accent, className, asChild = false, ...rest }, ref) {
31
+ const cls = chunkPASF6T4H_js.cx(
32
+ "card",
33
+ interactive && "card--interactive",
34
+ accent && `card--accent-${accent}`,
35
+ className
42
36
  );
37
+ if (asChild) {
38
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkEUB4PHPI_js.Slot, { ref, className: cls, ...rest });
39
+ }
40
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cls, ...rest });
43
41
  });
44
42
  var CardHeader = React__namespace.forwardRef(
45
43
  function CardHeader2({ className, ...rest }, ref) {
@@ -162,5 +160,5 @@ exports.ChipGroup = ChipGroup;
162
160
  exports.ProductCard = ProductCard;
163
161
  exports.Skeleton = Skeleton;
164
162
  exports.Spinner = Spinner;
165
- //# sourceMappingURL=chunk-26KJA67X.js.map
166
- //# sourceMappingURL=chunk-26KJA67X.js.map
163
+ //# sourceMappingURL=chunk-QSMUGO5F.js.map
164
+ //# sourceMappingURL=chunk-QSMUGO5F.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Display.tsx"],"names":["React","Card","cx","Slot","CardHeader","jsx","CardBody","CardFooter","jsxs","useLocale","X","ChipGroup"],"mappings":"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","file":"chunk-QSMUGO5F.js","sourcesContent":["import * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { X } from './Icons';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { Slot } from './Primitives';\n\nexport type CardAccent = 'brand' | 'secondary' | 'success' | 'warning' | 'danger' | 'info';\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n interactive?: boolean;\n accent?: CardAccent;\n /**\n * Render as the provided single child element instead of `<div>` (e.g.\n * a clickable card as `next/link`'s `<a>`). Card classes, ref and handlers\n * are merged onto it. Default `false` (identical behavior).\n */\n asChild?: boolean;\n}\n\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(function Card(\n { interactive, accent, className, asChild = false, ...rest },\n ref\n) {\n const cls = cx(\n 'card',\n interactive && 'card--interactive',\n accent && `card--accent-${accent}`,\n className\n );\n if (asChild) {\n return <Slot ref={ref as React.Ref<HTMLElement>} className={cls} {...rest} />;\n }\n return <div ref={ref} className={cls} {...rest} />;\n});\n\nexport const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardHeader({ className, ...rest }, ref) {\n return <div ref={ref} className={cx('card__header', className)} {...rest} />;\n }\n);\n\nexport const CardBody = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardBody({ className, ...rest }, ref) {\n return <div ref={ref} className={cx('card__body', className)} {...rest} />;\n }\n);\n\nexport const CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardFooter({ className, ...rest }, ref) {\n return <div ref={ref} className={cx('card__footer', className)} {...rest} />;\n }\n);\n\n// ---------- Badge --------------------------------------------------------\nexport type BadgeVariant =\n | 'primary' | 'accent' | 'success' | 'warning' | 'danger' | 'info' | 'neutral';\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n variant?: BadgeVariant;\n dot?: boolean;\n}\n\nexport function Badge({ variant = 'neutral', dot, className, children, ...rest }: BadgeProps) {\n return (\n <span className={cx('badge', `badge--${variant}`, className)} {...rest}>\n {dot && <span className=\"badge__dot\" aria-hidden=\"true\" />}\n {children}\n </span>\n );\n}\n\n// ---------- Alert --------------------------------------------------------\nexport type AlertVariant = 'info' | 'success' | 'warning' | 'danger';\n\nexport interface AlertProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n variant?: AlertVariant;\n title?: React.ReactNode;\n icon?: React.ReactNode;\n onClose?: () => void;\n}\n\nexport function Alert({ variant = 'info', title, icon, onClose, className, children, ...rest }: AlertProps) {\n const t = useLocale();\n return (\n <div role=\"alert\" className={cx('alert', `alert--${variant}`, className)} {...rest}>\n {icon && <span className=\"alert__icon\" aria-hidden=\"true\">{icon}</span>}\n <div className=\"alert__body\">\n {title && <div className=\"alert__title\">{title}</div>}\n {children && <div className=\"alert__desc\">{children}</div>}\n </div>\n {onClose && (\n <button type=\"button\" className=\"alert__close\" onClick={onClose} aria-label={t['alert.close']}>\n <X size={16} />\n </button>\n )}\n </div>\n );\n}\n\n// ---------- Skeleton & Spinner ------------------------------------------\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n width?: number | string;\n height?: number | string;\n rounded?: boolean;\n}\n\nexport function Skeleton({ width, height, rounded, className, style, ...rest }: SkeletonProps) {\n return (\n <div\n className={cx('skel', className)}\n style={{ width, height, borderRadius: rounded ? 999 : undefined, ...style }}\n aria-hidden=\"true\"\n {...rest}\n />\n );\n}\n\nexport interface SpinnerProps extends React.HTMLAttributes<HTMLSpanElement> {\n size?: 'sm' | 'md' | 'lg';\n inverse?: boolean;\n}\n\nexport function Spinner({ size = 'md', inverse, className, ...rest }: SpinnerProps) {\n const t = useLocale();\n return (\n <span\n role=\"status\"\n aria-label={t['spinner.loading']}\n className={cx('spinner', size === 'lg' && 'spinner--lg', inverse && 'spinner--inverse', className)}\n {...rest}\n />\n );\n}\n\n// ---------- Chip + ChipGroup --------------------------------------------\nexport interface ChipProps extends React.HTMLAttributes<HTMLSpanElement> {\n active?: boolean;\n onRemove?: () => void;\n removeLabel?: string;\n}\n\nexport function Chip({ active, onRemove, removeLabel, className, children, ...rest }: ChipProps) {\n const t = useLocale();\n return (\n <span className={cx('chip', active && 'chip--active', className)} {...rest}>\n <span>{children}</span>\n {onRemove && (\n <button\n type=\"button\"\n className=\"chip__close\"\n aria-label={removeLabel ?? t['chip.remove']}\n onClick={(e) => { e.stopPropagation(); onRemove(); }}\n >\n <X size={12} />\n </button>\n )}\n </span>\n );\n}\n\nexport const ChipGroup = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function ChipGroup({ className, style, ...rest }, ref) {\n return (\n <div\n ref={ref}\n className={cx('chip-group', className)}\n style={{ display: 'flex', flexWrap: 'wrap', gap: 8, ...style }}\n {...rest}\n />\n );\n }\n);\n\n// ---------- ProductCard -------------------------------------------------\nexport interface ProductCardProps extends React.HTMLAttributes<HTMLElement> {\n sku?: React.ReactNode;\n name: React.ReactNode;\n price?: React.ReactNode;\n image?: string;\n imageAlt?: string;\n tag?: React.ReactNode;\n footer?: React.ReactNode;\n}\n\nexport function ProductCard({\n sku, name, price, image, imageAlt, tag, footer, className, ...rest\n}: ProductCardProps) {\n return (\n <article className={cx('product-card', className)} {...rest}>\n {tag && <span className=\"product-card__tag\">{tag}</span>}\n <div className=\"product-card__media\">\n {image ? (\n <img src={image} alt={imageAlt ?? (typeof name === 'string' ? name : '')} />\n ) : (\n <div className=\"product-card__placeholder\">{sku ? `[ ${sku} ]` : 'SKU'}</div>\n )}\n </div>\n <div className=\"product-card__body\">\n {sku && <div className=\"product-card__sku\">{sku}</div>}\n <h4 className=\"product-card__title\">{name}</h4>\n {price && <div className=\"product-card__price\">{price}</div>}\n </div>\n {footer && <div className=\"product-card__footer\">{footer}</div>}\n </article>\n );\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkGCW5JYWQ_js = require('./chunk-GCW5JYWQ.js');
4
3
  var chunkDPMUWQHL_js = require('./chunk-DPMUWQHL.js');
5
4
  var chunkGLYGO7WX_js = require('./chunk-GLYGO7WX.js');
5
+ var chunkEUB4PHPI_js = require('./chunk-EUB4PHPI.js');
6
6
  var chunkRQOTH7I7_js = require('./chunk-RQOTH7I7.js');
7
7
  var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
8
8
  var React = require('react');
@@ -141,7 +141,7 @@ function Tooltip({ label, children, side = "top" }) {
141
141
  }
142
142
  var Divider = React__namespace.forwardRef(function Divider2({ orientation = "horizontal", className, ...rest }, ref) {
143
143
  return /* @__PURE__ */ jsxRuntime.jsx(
144
- chunkGCW5JYWQ_js.Separator,
144
+ chunkEUB4PHPI_js.Separator,
145
145
  {
146
146
  ref,
147
147
  orientation,
@@ -276,5 +276,5 @@ exports.Table = Table;
276
276
  exports.Tabs = Tabs;
277
277
  exports.Tooltip = Tooltip;
278
278
  exports.VStack = VStack;
279
- //# sourceMappingURL=chunk-HBUP7XO2.js.map
280
- //# sourceMappingURL=chunk-HBUP7XO2.js.map
279
+ //# sourceMappingURL=chunk-TI5QCUAV.js.map
280
+ //# sourceMappingURL=chunk-TI5QCUAV.js.map