@mindlogic-ai/logician-ui 5.0.0-alpha.11 → 5.0.0-alpha.13

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 (89) hide show
  1. package/README.md +1 -0
  2. package/dist/components/Input/Input.d.ts.map +1 -1
  3. package/dist/components/Input/Input.js +4 -0
  4. package/dist/components/Input/Input.js.map +1 -1
  5. package/dist/components/Input/Input.mjs +4 -0
  6. package/dist/components/Input/Input.mjs.map +1 -1
  7. package/dist/components/NavList/NavList.d.ts +34 -0
  8. package/dist/components/NavList/NavList.d.ts.map +1 -0
  9. package/dist/components/NavList/NavList.js +113 -0
  10. package/dist/components/NavList/NavList.js.map +1 -0
  11. package/dist/components/NavList/NavList.mjs +111 -0
  12. package/dist/components/NavList/NavList.mjs.map +1 -0
  13. package/dist/components/NavList/NavList.styles.d.ts +90 -0
  14. package/dist/components/NavList/NavList.styles.d.ts.map +1 -0
  15. package/dist/components/NavList/NavList.styles.js +104 -0
  16. package/dist/components/NavList/NavList.styles.js.map +1 -0
  17. package/dist/components/NavList/NavList.styles.mjs +97 -0
  18. package/dist/components/NavList/NavList.styles.mjs.map +1 -0
  19. package/dist/components/NavList/NavList.translations.json.js +19 -0
  20. package/dist/components/NavList/NavList.translations.json.js.map +1 -0
  21. package/dist/components/NavList/NavList.translations.json.mjs +14 -0
  22. package/dist/components/NavList/NavList.translations.json.mjs.map +1 -0
  23. package/dist/components/NavList/NavList.types.d.ts +131 -0
  24. package/dist/components/NavList/NavList.types.d.ts.map +1 -0
  25. package/dist/components/NavList/NavListContext.d.ts +30 -0
  26. package/dist/components/NavList/NavListContext.d.ts.map +1 -0
  27. package/dist/components/NavList/NavListContext.js +16 -0
  28. package/dist/components/NavList/NavListContext.js.map +1 -0
  29. package/dist/components/NavList/NavListContext.mjs +13 -0
  30. package/dist/components/NavList/NavListContext.mjs.map +1 -0
  31. package/dist/components/NavList/NavListGroup.d.ts +31 -0
  32. package/dist/components/NavList/NavListGroup.d.ts.map +1 -0
  33. package/dist/components/NavList/NavListGroup.js +115 -0
  34. package/dist/components/NavList/NavListGroup.js.map +1 -0
  35. package/dist/components/NavList/NavListGroup.mjs +113 -0
  36. package/dist/components/NavList/NavListGroup.mjs.map +1 -0
  37. package/dist/components/NavList/NavListItem.d.ts +15 -0
  38. package/dist/components/NavList/NavListItem.d.ts.map +1 -0
  39. package/dist/components/NavList/NavListItem.js +269 -0
  40. package/dist/components/NavList/NavListItem.js.map +1 -0
  41. package/dist/components/NavList/NavListItem.mjs +267 -0
  42. package/dist/components/NavList/NavListItem.mjs.map +1 -0
  43. package/dist/components/NavList/NavListSkeleton.d.ts +17 -0
  44. package/dist/components/NavList/NavListSkeleton.d.ts.map +1 -0
  45. package/dist/components/NavList/NavListSkeleton.js +33 -0
  46. package/dist/components/NavList/NavListSkeleton.js.map +1 -0
  47. package/dist/components/NavList/NavListSkeleton.mjs +31 -0
  48. package/dist/components/NavList/NavListSkeleton.mjs.map +1 -0
  49. package/dist/components/NavList/index.d.ts +7 -0
  50. package/dist/components/NavList/index.d.ts.map +1 -0
  51. package/dist/components/Textarea/Textarea.d.ts.map +1 -1
  52. package/dist/components/Textarea/Textarea.js +4 -0
  53. package/dist/components/Textarea/Textarea.js.map +1 -1
  54. package/dist/components/Textarea/Textarea.mjs +4 -0
  55. package/dist/components/Textarea/Textarea.mjs.map +1 -1
  56. package/dist/index.d.ts +2 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +12 -0
  59. package/dist/index.js.map +1 -1
  60. package/dist/index.mjs +6 -1
  61. package/dist/index.mjs.map +1 -1
  62. package/dist/utils/focusRing.d.ts +22 -0
  63. package/dist/utils/focusRing.d.ts.map +1 -1
  64. package/dist/utils/focusRing.js +22 -0
  65. package/dist/utils/focusRing.js.map +1 -1
  66. package/dist/utils/focusRing.mjs +21 -1
  67. package/dist/utils/focusRing.mjs.map +1 -1
  68. package/package.json +2 -1
  69. package/src/components/Input/Input.tsx +4 -0
  70. package/src/components/Menu/Menu.usage.mdx +8 -0
  71. package/src/components/NavList/NavList.stories.tsx +895 -0
  72. package/src/components/NavList/NavList.styles.ts +114 -0
  73. package/src/components/NavList/NavList.test.tsx +1254 -0
  74. package/src/components/NavList/NavList.translations.json +9 -0
  75. package/src/components/NavList/NavList.tsx +160 -0
  76. package/src/components/NavList/NavList.types.ts +145 -0
  77. package/src/components/NavList/NavList.usage.mdx +540 -0
  78. package/src/components/NavList/NavListContext.ts +25 -0
  79. package/src/components/NavList/NavListGroup.tsx +243 -0
  80. package/src/components/NavList/NavListItem.tsx +525 -0
  81. package/src/components/NavList/NavListSkeleton.tsx +57 -0
  82. package/src/components/NavList/index.ts +14 -0
  83. package/src/components/Tabs/Tabs.usage.mdx +58 -14
  84. package/src/components/Textarea/Textarea.tsx +4 -0
  85. package/src/components/Tooltip/Tooltip.usage.mdx +8 -0
  86. package/src/components/a11y.kwcag.test.tsx +66 -0
  87. package/src/components/claude.md +1 -1
  88. package/src/index.ts +7 -1
  89. package/src/utils/focusRing.ts +23 -0
@@ -0,0 +1,33 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var React = require('react');
6
+ var react = require('@chakra-ui/react');
7
+ var NavList_styles = require('./NavList.styles.js');
8
+
9
+ /** Widths that vary row to row, so the placeholder does not read as a table. */
10
+ const WIDTHS = ['72%', '56%', '84%', '64%', '48%', '76%'];
11
+ /**
12
+ * Placeholder rows while a rail's entries load, with the same row height,
13
+ * radius and gap as the real list, so nothing moves when it swaps in.
14
+ *
15
+ * Render it INSTEAD of the `NavList`, not inside it. It is `aria-hidden`: a
16
+ * column of grey bars says nothing to a screen reader, and "loading" belongs
17
+ * to the region that is loading (`aria-busy`, or a status message) rather
18
+ * than to one of its placeholders.
19
+ *
20
+ * Counts that are still loading are not this — leave `trailingVisual` unset
21
+ * until they arrive, and the row keeps its label.
22
+ */
23
+ const NavListSkeleton = React.forwardRef(({ count = 5, orientation = 'vertical', ...rest }, ref) => (jsxRuntime.jsx(react.chakra.ul, { ref: ref, "aria-hidden": true, ...NavList_styles.listStyles(orientation), ...rest, children: Array.from({ length: count }, (_, i) => (jsxRuntime.jsxs(react.chakra.li, { display: "flex", alignItems: "center", flexShrink: 0,
24
+ // The row's own box: `minH`, padding and one line of `p` text, so
25
+ // the placeholder is exactly as tall as the row that replaces it.
26
+ minH: 9, px: 2.5, py: 2, textStyle: "p", w: NavList_styles.byOrientation(orientation, 'auto', '96px'), children: [jsxRuntime.jsx(react.Skeleton, { h: 4, w: NavList_styles.byOrientation(orientation, WIDTHS[i % WIDTHS.length], 'full'), borderRadius: "sm",
27
+ // A placeholder that stops pulsing is still a placeholder; there
28
+ // is no progress for the motion to carry.
29
+ _motionReduce: { animation: 'none' } }), jsxRuntime.jsx(react.chakra.span, { w: 0, overflow: "hidden", children: '\u00A0' })] }, i))) })));
30
+ NavListSkeleton.displayName = 'NavList.Skeleton';
31
+
32
+ exports.NavListSkeleton = NavListSkeleton;
33
+ //# sourceMappingURL=NavListSkeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavListSkeleton.js","sources":["../../../src/components/NavList/NavListSkeleton.tsx"],"sourcesContent":[null],"names":["forwardRef","_jsx","chakra","listStyles","_jsxs","byOrientation","Skeleton"],"mappings":";;;;;;;;AAMA;AACA,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AAEzD;;;;;;;;;;;AAWG;AACI,MAAM,eAAe,GAAGA,gBAAU,CAGvC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,WAAW,GAAG,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,MACtDC,cAAA,CAACC,YAAM,CAAC,EAAE,IAAC,GAAG,EAAE,GAAG,EAAA,aAAA,EAAA,IAAA,EAAA,GAAkBC,yBAAU,CAAC,WAAW,CAAC,EAAA,GAAM,IAAI,EAAA,QAAA,EACnE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,MAClCC,eAAA,CAACF,YAAM,CAAC,EAAE,IAER,OAAO,EAAC,MAAM,EACd,UAAU,EAAC,QAAQ,EACnB,UAAU,EAAE,CAAC;;;QAGb,IAAI,EAAE,CAAC,EACP,EAAE,EAAE,GAAG,EACP,EAAE,EAAE,CAAC,EACL,SAAS,EAAC,GAAG,EACb,CAAC,EAAEG,4BAAa,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAA,QAAA,EAAA,CAE7CJ,eAACK,cAAQ,EAAA,EACP,CAAC,EAAE,CAAC,EACJ,CAAC,EAAED,4BAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAChE,YAAY,EAAC,IAAI;;;AAGjB,gBAAA,aAAa,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAA,CACpC,EACFJ,cAAA,CAACC,YAAM,CAAC,IAAI,IAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAC,QAAQ,EAAA,QAAA,EACjC,QAAQ,EAAA,CACG,CAAA,EAAA,EAtBT,CAAC,CAuBI,CACb,CAAC,EAAA,CACQ,CACb;AAED,eAAe,CAAC,WAAW,GAAG,kBAAkB;;;;"}
@@ -0,0 +1,31 @@
1
+ "use client";
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { forwardRef } from 'react';
4
+ import { chakra, Skeleton } from '@chakra-ui/react';
5
+ import { listStyles, byOrientation } from './NavList.styles.mjs';
6
+
7
+ /** Widths that vary row to row, so the placeholder does not read as a table. */
8
+ const WIDTHS = ['72%', '56%', '84%', '64%', '48%', '76%'];
9
+ /**
10
+ * Placeholder rows while a rail's entries load, with the same row height,
11
+ * radius and gap as the real list, so nothing moves when it swaps in.
12
+ *
13
+ * Render it INSTEAD of the `NavList`, not inside it. It is `aria-hidden`: a
14
+ * column of grey bars says nothing to a screen reader, and "loading" belongs
15
+ * to the region that is loading (`aria-busy`, or a status message) rather
16
+ * than to one of its placeholders.
17
+ *
18
+ * Counts that are still loading are not this — leave `trailingVisual` unset
19
+ * until they arrive, and the row keeps its label.
20
+ */
21
+ const NavListSkeleton = forwardRef(({ count = 5, orientation = 'vertical', ...rest }, ref) => (jsx(chakra.ul, { ref: ref, "aria-hidden": true, ...listStyles(orientation), ...rest, children: Array.from({ length: count }, (_, i) => (jsxs(chakra.li, { display: "flex", alignItems: "center", flexShrink: 0,
22
+ // The row's own box: `minH`, padding and one line of `p` text, so
23
+ // the placeholder is exactly as tall as the row that replaces it.
24
+ minH: 9, px: 2.5, py: 2, textStyle: "p", w: byOrientation(orientation, 'auto', '96px'), children: [jsx(Skeleton, { h: 4, w: byOrientation(orientation, WIDTHS[i % WIDTHS.length], 'full'), borderRadius: "sm",
25
+ // A placeholder that stops pulsing is still a placeholder; there
26
+ // is no progress for the motion to carry.
27
+ _motionReduce: { animation: 'none' } }), jsx(chakra.span, { w: 0, overflow: "hidden", children: '\u00A0' })] }, i))) })));
28
+ NavListSkeleton.displayName = 'NavList.Skeleton';
29
+
30
+ export { NavListSkeleton };
31
+ //# sourceMappingURL=NavListSkeleton.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavListSkeleton.mjs","sources":["../../../src/components/NavList/NavListSkeleton.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":";;;;;;AAMA;AACA,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AAEzD;;;;;;;;;;;AAWG;AACI,MAAM,eAAe,GAAG,UAAU,CAGvC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,WAAW,GAAG,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,MACtDA,GAAA,CAAC,MAAM,CAAC,EAAE,IAAC,GAAG,EAAE,GAAG,EAAA,aAAA,EAAA,IAAA,EAAA,GAAkB,UAAU,CAAC,WAAW,CAAC,EAAA,GAAM,IAAI,EAAA,QAAA,EACnE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,MAClCC,IAAA,CAAC,MAAM,CAAC,EAAE,IAER,OAAO,EAAC,MAAM,EACd,UAAU,EAAC,QAAQ,EACnB,UAAU,EAAE,CAAC;;;QAGb,IAAI,EAAE,CAAC,EACP,EAAE,EAAE,GAAG,EACP,EAAE,EAAE,CAAC,EACL,SAAS,EAAC,GAAG,EACb,CAAC,EAAE,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAA,QAAA,EAAA,CAE7CD,IAAC,QAAQ,EAAA,EACP,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAChE,YAAY,EAAC,IAAI;;;AAGjB,gBAAA,aAAa,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAA,CACpC,EACFA,GAAA,CAAC,MAAM,CAAC,IAAI,IAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAC,QAAQ,EAAA,QAAA,EACjC,QAAQ,EAAA,CACG,CAAA,EAAA,EAtBT,CAAC,CAuBI,CACb,CAAC,EAAA,CACQ,CACb;AAED,eAAe,CAAC,WAAW,GAAG,kBAAkB;;;;"}
@@ -0,0 +1,7 @@
1
+ export { NavList } from './NavList';
2
+ export { NAV_LIST_RAMP } from './NavList.styles';
3
+ export type { NavListGroupProps, NavListItemProps, NavListOrientation, NavListProps, NavListResponsiveOrientation, NavListSkeletonProps, NavListTrailingActionVisibility, } from './NavList.types';
4
+ export { NavListGroup } from './NavListGroup';
5
+ export { NavListItem } from './NavListItem';
6
+ export { NavListSkeleton } from './NavListSkeleton';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/NavList/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,4BAA4B,EAC5B,oBAAoB,EACpB,+BAA+B,GAChC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../../src/components/Textarea/Textarea.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,eAAO,MAAM,QAAQ,+GAmGpB,CAAC"}
1
+ {"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../../src/components/Textarea/Textarea.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,eAAO,MAAM,QAAQ,+GAuGpB,CAAC"}
@@ -48,6 +48,10 @@ const Textarea = React.forwardRef(({ placeholder, onChange, value: propValue, _f
48
48
  bg: 'bg.subtle',
49
49
  color: 'fg.muted',
50
50
  borderColor: 'border.subtle',
51
+ // Nothing can be typed here, so hovering must not promise an edit.
52
+ _hover: {
53
+ borderColor: 'border.subtle',
54
+ },
51
55
  }, _disabled: {
52
56
  ...disabledControl.disabledControl,
53
57
  cursor: 'not-allowed',
@@ -1 +1 @@
1
- {"version":3,"file":"Textarea.js","sources":["../../../src/components/Textarea/Textarea.tsx"],"sourcesContent":[null],"names":["forwardRef","useState","useEffect","_jsx","ChakraTextarea","disabledControl","mergeCss","noZoomOnFocus"],"mappings":";;;;;;;;;;AASO,MAAM,QAAQ,GAAGA,gBAAU,CAChC,CACE,EACE,WAAW,EACX,QAAQ,EACR,KAAK,EAAE,SAAS,EAChB,aAAa,EACb,MAAM,EACN,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,WAAW,EACX,GAAG,EACH,GAAG,KAAK,EACT,EACD,GAAG,KACD;IACF,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAGC,cAAQ,CAE9C,SAAS,CAAC;IAEZC,eAAS,CAAC,MAAK;QACb,eAAe,CAAC,SAAS,CAAC;AAC5B,IAAA,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AAEf,IAAA,MAAM,YAAY,GAAG,CAAC,CAAmC,KAAI;AAC3D,QAAA,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAE/B,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,CAAC,CAAC;QACb;AACF,IAAA,CAAC;AAED,IAAA,QACEC,cAAA,CAACC,cAAc,IACb,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAAA,cAAA,EACJ,OAAO,IAAI,SAAS,EAClC,MAAM,EAAC,MAAM,EACb,EAAE,EAAC,YAAY,EACf,KAAK,EAAC,YAAY;;;;;;AAMlB,QAAA,cAAc,EAAE,OAAO,GAAG,cAAc,GAAG,cAAc,EACzD,WAAW,EACT,WAAW,KAAK,OAAO,GAAG,cAAc,GAAG,gBAAgB,CAAC,EAE9D,MAAM,EAAE;YACN,WAAW,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;AACjD,YAAA,GAAG,MAAM;AACV,SAAA,EACD,MAAM,EAAE;YACN,WAAW,EAAE,OAAO,GAAG,cAAc,GAAG,cAAc;AACtD,YAAA,SAAS,EAAE;AACT,kBAAE;AACF,kBAAE,6CAA6C;AACjD,YAAA,GAAG,MAAM;AACV,SAAA,EACD,QAAQ,EAAE;AACR,YAAA,WAAW,EAAE,cAAc;AAC3B,YAAA,MAAM,EAAE;AACN,gBAAA,WAAW,EAAE,cAAc;AAC5B,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,WAAW,EAAE,cAAc;AAC5B,aAAA;AACF,SAAA,EACD,SAAS,EAAE;AACT,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,MAAM,EAAE,aAAa;AACrB,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,WAAW,EAAE,eAAe;AAC7B,SAAA,EACD,SAAS,EAAE;AACT,YAAA,GAAGC,+BAAe;AAClB,YAAA,MAAM,EAAE,aAAa;AACrB,YAAA,UAAU,EAAE,UAAU;AACvB,SAAA,EAAA,GACG,KAAK,EACT,GAAG,EAAEC,iBAAQ,CACXC,0BAAa,EACb;AACE,YAAA,eAAe,EAAE,mCAAmC;AACpD,YAAA,eAAe,EAAE,mCAAmC;AACrD,SAAA,EACD,GAAG,CACJ,EAAA,CACD;AAEN,CAAC;AAGH,QAAQ,CAAC,WAAW,GAAG,UAAU;;;;"}
1
+ {"version":3,"file":"Textarea.js","sources":["../../../src/components/Textarea/Textarea.tsx"],"sourcesContent":[null],"names":["forwardRef","useState","useEffect","_jsx","ChakraTextarea","disabledControl","mergeCss","noZoomOnFocus"],"mappings":";;;;;;;;;;AASO,MAAM,QAAQ,GAAGA,gBAAU,CAChC,CACE,EACE,WAAW,EACX,QAAQ,EACR,KAAK,EAAE,SAAS,EAChB,aAAa,EACb,MAAM,EACN,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,WAAW,EACX,GAAG,EACH,GAAG,KAAK,EACT,EACD,GAAG,KACD;IACF,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAGC,cAAQ,CAE9C,SAAS,CAAC;IAEZC,eAAS,CAAC,MAAK;QACb,eAAe,CAAC,SAAS,CAAC;AAC5B,IAAA,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AAEf,IAAA,MAAM,YAAY,GAAG,CAAC,CAAmC,KAAI;AAC3D,QAAA,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAE/B,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,CAAC,CAAC;QACb;AACF,IAAA,CAAC;AAED,IAAA,QACEC,cAAA,CAACC,cAAc,IACb,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAAA,cAAA,EACJ,OAAO,IAAI,SAAS,EAClC,MAAM,EAAC,MAAM,EACb,EAAE,EAAC,YAAY,EACf,KAAK,EAAC,YAAY;;;;;;AAMlB,QAAA,cAAc,EAAE,OAAO,GAAG,cAAc,GAAG,cAAc,EACzD,WAAW,EACT,WAAW,KAAK,OAAO,GAAG,cAAc,GAAG,gBAAgB,CAAC,EAE9D,MAAM,EAAE;YACN,WAAW,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;AACjD,YAAA,GAAG,MAAM;AACV,SAAA,EACD,MAAM,EAAE;YACN,WAAW,EAAE,OAAO,GAAG,cAAc,GAAG,cAAc;AACtD,YAAA,SAAS,EAAE;AACT,kBAAE;AACF,kBAAE,6CAA6C;AACjD,YAAA,GAAG,MAAM;AACV,SAAA,EACD,QAAQ,EAAE;AACR,YAAA,WAAW,EAAE,cAAc;AAC3B,YAAA,MAAM,EAAE;AACN,gBAAA,WAAW,EAAE,cAAc;AAC5B,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,WAAW,EAAE,cAAc;AAC5B,aAAA;AACF,SAAA,EACD,SAAS,EAAE;AACT,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,MAAM,EAAE,aAAa;AACrB,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,WAAW,EAAE,eAAe;;AAE5B,YAAA,MAAM,EAAE;AACN,gBAAA,WAAW,EAAE,eAAe;AAC7B,aAAA;AACF,SAAA,EACD,SAAS,EAAE;AACT,YAAA,GAAGC,+BAAe;AAClB,YAAA,MAAM,EAAE,aAAa;AACrB,YAAA,UAAU,EAAE,UAAU;AACvB,SAAA,EAAA,GACG,KAAK,EACT,GAAG,EAAEC,iBAAQ,CACXC,0BAAa,EACb;AACE,YAAA,eAAe,EAAE,mCAAmC;AACpD,YAAA,eAAe,EAAE,mCAAmC;AACrD,SAAA,EACD,GAAG,CACJ,EAAA,CACD;AAEN,CAAC;AAGH,QAAQ,CAAC,WAAW,GAAG,UAAU;;;;"}
@@ -46,6 +46,10 @@ const Textarea = forwardRef(({ placeholder, onChange, value: propValue, _focusVi
46
46
  bg: 'bg.subtle',
47
47
  color: 'fg.muted',
48
48
  borderColor: 'border.subtle',
49
+ // Nothing can be typed here, so hovering must not promise an edit.
50
+ _hover: {
51
+ borderColor: 'border.subtle',
52
+ },
49
53
  }, _disabled: {
50
54
  ...disabledControl,
51
55
  cursor: 'not-allowed',
@@ -1 +1 @@
1
- {"version":3,"file":"Textarea.mjs","sources":["../../../src/components/Textarea/Textarea.tsx"],"sourcesContent":[null],"names":["_jsx","ChakraTextarea"],"mappings":";;;;;;;;AASO,MAAM,QAAQ,GAAG,UAAU,CAChC,CACE,EACE,WAAW,EACX,QAAQ,EACR,KAAK,EAAE,SAAS,EAChB,aAAa,EACb,MAAM,EACN,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,WAAW,EACX,GAAG,EACH,GAAG,KAAK,EACT,EACD,GAAG,KACD;IACF,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAE9C,SAAS,CAAC;IAEZ,SAAS,CAAC,MAAK;QACb,eAAe,CAAC,SAAS,CAAC;AAC5B,IAAA,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AAEf,IAAA,MAAM,YAAY,GAAG,CAAC,CAAmC,KAAI;AAC3D,QAAA,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAE/B,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,CAAC,CAAC;QACb;AACF,IAAA,CAAC;AAED,IAAA,QACEA,GAAA,CAACC,UAAc,IACb,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAAA,cAAA,EACJ,OAAO,IAAI,SAAS,EAClC,MAAM,EAAC,MAAM,EACb,EAAE,EAAC,YAAY,EACf,KAAK,EAAC,YAAY;;;;;;AAMlB,QAAA,cAAc,EAAE,OAAO,GAAG,cAAc,GAAG,cAAc,EACzD,WAAW,EACT,WAAW,KAAK,OAAO,GAAG,cAAc,GAAG,gBAAgB,CAAC,EAE9D,MAAM,EAAE;YACN,WAAW,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;AACjD,YAAA,GAAG,MAAM;AACV,SAAA,EACD,MAAM,EAAE;YACN,WAAW,EAAE,OAAO,GAAG,cAAc,GAAG,cAAc;AACtD,YAAA,SAAS,EAAE;AACT,kBAAE;AACF,kBAAE,6CAA6C;AACjD,YAAA,GAAG,MAAM;AACV,SAAA,EACD,QAAQ,EAAE;AACR,YAAA,WAAW,EAAE,cAAc;AAC3B,YAAA,MAAM,EAAE;AACN,gBAAA,WAAW,EAAE,cAAc;AAC5B,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,WAAW,EAAE,cAAc;AAC5B,aAAA;AACF,SAAA,EACD,SAAS,EAAE;AACT,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,MAAM,EAAE,aAAa;AACrB,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,WAAW,EAAE,eAAe;AAC7B,SAAA,EACD,SAAS,EAAE;AACT,YAAA,GAAG,eAAe;AAClB,YAAA,MAAM,EAAE,aAAa;AACrB,YAAA,UAAU,EAAE,UAAU;AACvB,SAAA,EAAA,GACG,KAAK,EACT,GAAG,EAAE,QAAQ,CACX,aAAa,EACb;AACE,YAAA,eAAe,EAAE,mCAAmC;AACpD,YAAA,eAAe,EAAE,mCAAmC;AACrD,SAAA,EACD,GAAG,CACJ,EAAA,CACD;AAEN,CAAC;AAGH,QAAQ,CAAC,WAAW,GAAG,UAAU;;;;"}
1
+ {"version":3,"file":"Textarea.mjs","sources":["../../../src/components/Textarea/Textarea.tsx"],"sourcesContent":[null],"names":["_jsx","ChakraTextarea"],"mappings":";;;;;;;;AASO,MAAM,QAAQ,GAAG,UAAU,CAChC,CACE,EACE,WAAW,EACX,QAAQ,EACR,KAAK,EAAE,SAAS,EAChB,aAAa,EACb,MAAM,EACN,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,WAAW,EACX,GAAG,EACH,GAAG,KAAK,EACT,EACD,GAAG,KACD;IACF,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAE9C,SAAS,CAAC;IAEZ,SAAS,CAAC,MAAK;QACb,eAAe,CAAC,SAAS,CAAC;AAC5B,IAAA,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AAEf,IAAA,MAAM,YAAY,GAAG,CAAC,CAAmC,KAAI;AAC3D,QAAA,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAE/B,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,CAAC,CAAC;QACb;AACF,IAAA,CAAC;AAED,IAAA,QACEA,GAAA,CAACC,UAAc,IACb,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAAA,cAAA,EACJ,OAAO,IAAI,SAAS,EAClC,MAAM,EAAC,MAAM,EACb,EAAE,EAAC,YAAY,EACf,KAAK,EAAC,YAAY;;;;;;AAMlB,QAAA,cAAc,EAAE,OAAO,GAAG,cAAc,GAAG,cAAc,EACzD,WAAW,EACT,WAAW,KAAK,OAAO,GAAG,cAAc,GAAG,gBAAgB,CAAC,EAE9D,MAAM,EAAE;YACN,WAAW,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;AACjD,YAAA,GAAG,MAAM;AACV,SAAA,EACD,MAAM,EAAE;YACN,WAAW,EAAE,OAAO,GAAG,cAAc,GAAG,cAAc;AACtD,YAAA,SAAS,EAAE;AACT,kBAAE;AACF,kBAAE,6CAA6C;AACjD,YAAA,GAAG,MAAM;AACV,SAAA,EACD,QAAQ,EAAE;AACR,YAAA,WAAW,EAAE,cAAc;AAC3B,YAAA,MAAM,EAAE;AACN,gBAAA,WAAW,EAAE,cAAc;AAC5B,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,WAAW,EAAE,cAAc;AAC5B,aAAA;AACF,SAAA,EACD,SAAS,EAAE;AACT,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,MAAM,EAAE,aAAa;AACrB,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,WAAW,EAAE,eAAe;;AAE5B,YAAA,MAAM,EAAE;AACN,gBAAA,WAAW,EAAE,eAAe;AAC7B,aAAA;AACF,SAAA,EACD,SAAS,EAAE;AACT,YAAA,GAAG,eAAe;AAClB,YAAA,MAAM,EAAE,aAAa;AACrB,YAAA,UAAU,EAAE,UAAU;AACvB,SAAA,EAAA,GACG,KAAK,EACT,GAAG,EAAE,QAAQ,CACX,aAAa,EACb;AACE,YAAA,eAAe,EAAE,mCAAmC;AACpD,YAAA,eAAe,EAAE,mCAAmC;AACrD,SAAA,EACD,GAAG,CACJ,EAAA,CACD;AAEN,CAAC;AAGH,QAAQ,CAAC,WAAW,GAAG,UAAU;;;;"}
package/dist/index.d.ts CHANGED
@@ -46,6 +46,7 @@ export * from './components/Menu';
46
46
  export * from './components/Modal';
47
47
  export * from './components/MonthPicker';
48
48
  export * from './components/Popover';
49
+ export * from './components/NavList';
49
50
  export * from './components/Pagination';
50
51
  export * from './components/PasswordInput';
51
52
  export * from './components/PinInput';
@@ -83,7 +84,7 @@ export { noZoomOnFocus } from './theme/formControls';
83
84
  export { animationStyles, durations, easings, MOTION_DURATION_MS, MOTION_DURATION_S, MOTION_EASE, MOTION_EASE_CSS, MOTION_STAGGER_MAX, type MotionDurationToken, type MotionEaseToken, type MotionStyleToken, } from './theme/motion';
84
85
  export { cubicBezier } from './utils/cubicBezier';
85
86
  export { disabledControl, disabledText } from './utils/disabledControl';
86
- export { FOCUS_RING_SHADOW, focusRing } from './utils/focusRing';
87
+ export { FOCUS_RING_INSET_SHADOW, FOCUS_RING_SHADOW, focusRing, focusRingInset, } from './utils/focusRing';
87
88
  export { staggerDelayMs, type StaggerProps, staggerProps, } from './utils/staggerProps';
88
89
  export type { PolymorphicComponent, PolymorphicProps, PolymorphicRef, } from './types/polymorphic';
89
90
  export { polymorphic } from './types/polymorphic';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AAGnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AAGvC,YAAY,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AACrE,cAAc,yBAAyB,CAAC;AAGxC,YAAY,EACV,WAAW,EACX,SAAS,IAAI,eAAe,GAC7B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAG3E,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AAGxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AAGtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAG5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAEtC,OAAO,EACL,OAAO,EACP,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,IAAI,GACL,MAAM,yBAAyB,CAAC;AAKjC,YAAY,EACV,YAAY,EACZ,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,eAAe,EACf,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,aAAa,EACb,SAAS,EACT,kBAAkB,EAClB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGnE,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,KAAK,oBAAoB,EACzB,0BAA0B,EAC1B,MAAM,EACN,KAAK,GACN,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,MAAM,EACN,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,4BAA4B,EACjC,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,cAAc,EACd,gBAAgB,EAChB,KAAK,SAAS,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACL,eAAe,EACf,SAAS,EACT,OAAO,EACP,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,SAAS,EACT,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,cAAc,EACd,KAAK,YAAY,EACjB,YAAY,GACb,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -91,6 +91,11 @@ var ModalOverlay = require('./components/Modal/ModalOverlay.js');
91
91
  var constants = require('./components/MonthPicker/constants.js');
92
92
  var MonthPicker = require('./components/MonthPicker/MonthPicker.js');
93
93
  var Popover = require('./components/Popover/Popover.js');
94
+ var NavList = require('./components/NavList/NavList.js');
95
+ var NavList_styles = require('./components/NavList/NavList.styles.js');
96
+ var NavListGroup = require('./components/NavList/NavListGroup.js');
97
+ var NavListItem = require('./components/NavList/NavListItem.js');
98
+ var NavListSkeleton = require('./components/NavList/NavListSkeleton.js');
94
99
  var Pagination = require('./components/Pagination/Pagination.js');
95
100
  var PasswordInput = require('./components/PasswordInput/PasswordInput.js');
96
101
  var PinInput = require('./components/PinInput/PinInput.js');
@@ -314,6 +319,11 @@ exports.getDefaultFullDateFormat = constants.getDefaultFullDateFormat;
314
319
  exports.getMonthNames = constants.getMonthNames;
315
320
  exports.MonthPicker = MonthPicker.MonthPicker;
316
321
  exports.Popover = Popover.Popover;
322
+ exports.NavList = NavList.NavList;
323
+ exports.NAV_LIST_RAMP = NavList_styles.NAV_LIST_RAMP;
324
+ exports.NavListGroup = NavListGroup.NavListGroup;
325
+ exports.NavListItem = NavListItem.NavListItem;
326
+ exports.NavListSkeleton = NavListSkeleton.NavListSkeleton;
317
327
  exports.Pagination = Pagination.Pagination;
318
328
  exports.PasswordInput = PasswordInput.PasswordInput;
319
329
  exports.PinInput = PinInput.PinInput;
@@ -479,8 +489,10 @@ exports.easings = motion.easings;
479
489
  exports.cubicBezier = cubicBezier.cubicBezier;
480
490
  exports.disabledControl = disabledControl.disabledControl;
481
491
  exports.disabledText = disabledControl.disabledText;
492
+ exports.FOCUS_RING_INSET_SHADOW = focusRing.FOCUS_RING_INSET_SHADOW;
482
493
  exports.FOCUS_RING_SHADOW = focusRing.FOCUS_RING_SHADOW;
483
494
  exports.focusRing = focusRing.focusRing;
495
+ exports.focusRingInset = focusRing.focusRingInset;
484
496
  exports.staggerDelayMs = staggerProps.staggerDelayMs;
485
497
  exports.staggerProps = staggerProps.staggerProps;
486
498
  exports.polymorphic = polymorphic.polymorphic;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index.mjs CHANGED
@@ -89,6 +89,11 @@ export { ModalOverlay } from './components/Modal/ModalOverlay.mjs';
89
89
  export { MONTHS, getDateFnsLocale, getDayNames, getDefaultDateFormat, getDefaultFullDateFormat, getMonthNames } from './components/MonthPicker/constants.mjs';
90
90
  export { MonthPicker } from './components/MonthPicker/MonthPicker.mjs';
91
91
  export { Popover } from './components/Popover/Popover.mjs';
92
+ export { NavList } from './components/NavList/NavList.mjs';
93
+ export { NAV_LIST_RAMP } from './components/NavList/NavList.styles.mjs';
94
+ export { NavListGroup } from './components/NavList/NavListGroup.mjs';
95
+ export { NavListItem } from './components/NavList/NavListItem.mjs';
96
+ export { NavListSkeleton } from './components/NavList/NavListSkeleton.mjs';
92
97
  export { Pagination } from './components/Pagination/Pagination.mjs';
93
98
  export { PasswordInput } from './components/PasswordInput/PasswordInput.mjs';
94
99
  export { PinInput } from './components/PinInput/PinInput.mjs';
@@ -195,7 +200,7 @@ export { noZoomOnFocus } from './theme/formControls.mjs';
195
200
  export { MOTION_DURATION_MS, MOTION_DURATION_S, MOTION_EASE, MOTION_EASE_CSS, MOTION_STAGGER_MAX, animationStyles, durations, easings } from './theme/motion.mjs';
196
201
  export { cubicBezier } from './utils/cubicBezier.mjs';
197
202
  export { disabledControl, disabledText } from './utils/disabledControl.mjs';
198
- export { FOCUS_RING_SHADOW, focusRing } from './utils/focusRing.mjs';
203
+ export { FOCUS_RING_INSET_SHADOW, FOCUS_RING_SHADOW, focusRing, focusRingInset } from './utils/focusRing.mjs';
199
204
  export { staggerDelayMs, staggerProps } from './utils/staggerProps.mjs';
200
205
  export { polymorphic } from './types/polymorphic.mjs';
201
206
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -25,4 +25,26 @@ export declare const focusRing: {
25
25
  readonly boxShadow: "var(--chakra-colors-bg-canvas) 0px 0px 0px 2px, var(--chakra-colors-focus-ring) 0px 0px 0px 4px";
26
26
  };
27
27
  };
28
+ /**
29
+ * The same two bands as {@link FOCUS_RING_SHADOW}, drawn INSIDE the element's
30
+ * edge: the outer 2px in `focus.ring`, then the 2px `bg.canvas` band that keeps
31
+ * the ring legible against whatever fill the element has.
32
+ *
33
+ * {@link focusRing} needs 4px of clear space on every side, because both bands
34
+ * paint outside the box. Rows packed into a list cannot give it that — the band
35
+ * lands on the neighbouring row, which paints its own background back over
36
+ * half of it — and a list that scrolls (`overflow-x: auto`) clips it outright.
37
+ * Same colour and weight, inside the box instead.
38
+ */
39
+ export declare const FOCUS_RING_INSET_SHADOW = "inset 0 0 0 2px var(--chakra-colors-focus-ring), inset 0 0 0 4px var(--chakra-colors-bg-canvas)";
40
+ /** {@link focusRing}'s inset counterpart, for rows in a dense or scrolling list. */
41
+ export declare const focusRingInset: {
42
+ readonly _focus: {
43
+ readonly outline: "none";
44
+ };
45
+ readonly _focusVisible: {
46
+ readonly outline: "none";
47
+ readonly boxShadow: "inset 0 0 0 2px var(--chakra-colors-focus-ring), inset 0 0 0 4px var(--chakra-colors-bg-canvas)";
48
+ };
49
+ };
28
50
  //# sourceMappingURL=focusRing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"focusRing.d.ts","sourceRoot":"","sources":["../../src/utils/focusRing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,iBAAiB,oGACqE,CAAC;AAEpG,eAAO,MAAM,SAAS;;;;;;;;CAMZ,CAAC"}
1
+ {"version":3,"file":"focusRing.d.ts","sourceRoot":"","sources":["../../src/utils/focusRing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,iBAAiB,oGACqE,CAAC;AAEpG,eAAO,MAAM,SAAS;;;;;;;;CAMZ,CAAC;AAEX;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,oGAC+D,CAAC;AAEpG,oFAAoF;AACpF,eAAO,MAAM,cAAc;;;;;;;;CAMjB,CAAC"}
@@ -26,7 +26,29 @@ const focusRing = {
26
26
  boxShadow: FOCUS_RING_SHADOW,
27
27
  },
28
28
  };
29
+ /**
30
+ * The same two bands as {@link FOCUS_RING_SHADOW}, drawn INSIDE the element's
31
+ * edge: the outer 2px in `focus.ring`, then the 2px `bg.canvas` band that keeps
32
+ * the ring legible against whatever fill the element has.
33
+ *
34
+ * {@link focusRing} needs 4px of clear space on every side, because both bands
35
+ * paint outside the box. Rows packed into a list cannot give it that — the band
36
+ * lands on the neighbouring row, which paints its own background back over
37
+ * half of it — and a list that scrolls (`overflow-x: auto`) clips it outright.
38
+ * Same colour and weight, inside the box instead.
39
+ */
40
+ const FOCUS_RING_INSET_SHADOW = 'inset 0 0 0 2px var(--chakra-colors-focus-ring), inset 0 0 0 4px var(--chakra-colors-bg-canvas)';
41
+ /** {@link focusRing}'s inset counterpart, for rows in a dense or scrolling list. */
42
+ const focusRingInset = {
43
+ _focus: { outline: 'none' },
44
+ _focusVisible: {
45
+ outline: 'none',
46
+ boxShadow: FOCUS_RING_INSET_SHADOW,
47
+ },
48
+ };
29
49
 
50
+ exports.FOCUS_RING_INSET_SHADOW = FOCUS_RING_INSET_SHADOW;
30
51
  exports.FOCUS_RING_SHADOW = FOCUS_RING_SHADOW;
31
52
  exports.focusRing = focusRing;
53
+ exports.focusRingInset = focusRingInset;
32
54
  //# sourceMappingURL=focusRing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"focusRing.js","sources":["../../src/utils/focusRing.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;AAgBG;AACI,MAAM,iBAAiB,GAC5B;AAEK,MAAM,SAAS,GAAG;AACvB,IAAA,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;AAC3B,IAAA,aAAa,EAAE;AACb,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,SAAS,EAAE,iBAAiB;AAC7B,KAAA;;;;;;"}
1
+ {"version":3,"file":"focusRing.js","sources":["../../src/utils/focusRing.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;AAgBG;AACI,MAAM,iBAAiB,GAC5B;AAEK,MAAM,SAAS,GAAG;AACvB,IAAA,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;AAC3B,IAAA,aAAa,EAAE;AACb,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,SAAS,EAAE,iBAAiB;AAC7B,KAAA;;AAGH;;;;;;;;;;AAUG;AACI,MAAM,uBAAuB,GAClC;AAEF;AACO,MAAM,cAAc,GAAG;AAC5B,IAAA,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;AAC3B,IAAA,aAAa,EAAE;AACb,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,SAAS,EAAE,uBAAuB;AACnC,KAAA;;;;;;;;"}
@@ -24,6 +24,26 @@ const focusRing = {
24
24
  boxShadow: FOCUS_RING_SHADOW,
25
25
  },
26
26
  };
27
+ /**
28
+ * The same two bands as {@link FOCUS_RING_SHADOW}, drawn INSIDE the element's
29
+ * edge: the outer 2px in `focus.ring`, then the 2px `bg.canvas` band that keeps
30
+ * the ring legible against whatever fill the element has.
31
+ *
32
+ * {@link focusRing} needs 4px of clear space on every side, because both bands
33
+ * paint outside the box. Rows packed into a list cannot give it that — the band
34
+ * lands on the neighbouring row, which paints its own background back over
35
+ * half of it — and a list that scrolls (`overflow-x: auto`) clips it outright.
36
+ * Same colour and weight, inside the box instead.
37
+ */
38
+ const FOCUS_RING_INSET_SHADOW = 'inset 0 0 0 2px var(--chakra-colors-focus-ring), inset 0 0 0 4px var(--chakra-colors-bg-canvas)';
39
+ /** {@link focusRing}'s inset counterpart, for rows in a dense or scrolling list. */
40
+ const focusRingInset = {
41
+ _focus: { outline: 'none' },
42
+ _focusVisible: {
43
+ outline: 'none',
44
+ boxShadow: FOCUS_RING_INSET_SHADOW,
45
+ },
46
+ };
27
47
 
28
- export { FOCUS_RING_SHADOW, focusRing };
48
+ export { FOCUS_RING_INSET_SHADOW, FOCUS_RING_SHADOW, focusRing, focusRingInset };
29
49
  //# sourceMappingURL=focusRing.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"focusRing.mjs","sources":["../../src/utils/focusRing.ts"],"sourcesContent":[null],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;AAgBG;AACI,MAAM,iBAAiB,GAC5B;AAEK,MAAM,SAAS,GAAG;AACvB,IAAA,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;AAC3B,IAAA,aAAa,EAAE;AACb,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,SAAS,EAAE,iBAAiB;AAC7B,KAAA;;;;;"}
1
+ {"version":3,"file":"focusRing.mjs","sources":["../../src/utils/focusRing.ts"],"sourcesContent":[null],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;AAgBG;AACI,MAAM,iBAAiB,GAC5B;AAEK,MAAM,SAAS,GAAG;AACvB,IAAA,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;AAC3B,IAAA,aAAa,EAAE;AACb,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,SAAS,EAAE,iBAAiB;AAC7B,KAAA;;AAGH;;;;;;;;;;AAUG;AACI,MAAM,uBAAuB,GAClC;AAEF;AACO,MAAM,cAAc,GAAG;AAC5B,IAAA,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;AAC3B,IAAA,aAAa,EAAE;AACb,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,SAAS,EAAE,uBAAuB;AACnC,KAAA;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindlogic-ai/logician-ui",
3
- "version": "5.0.0-alpha.11",
3
+ "version": "5.0.0-alpha.13",
4
4
  "description": "A comprehensive React design system built on Chakra UI",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -111,6 +111,7 @@
111
111
  "@testing-library/dom": "^10.4.0",
112
112
  "@testing-library/jest-dom": "^6.9.1",
113
113
  "@testing-library/react": "^16.3.0",
114
+ "@testing-library/user-event": "^14.6.1",
114
115
  "@types/jscodeshift": "^17.3.0",
115
116
  "@types/react": "^18.2.0",
116
117
  "@types/react-dom": "^18.2.0",
@@ -352,6 +352,10 @@ export const Input = forwardRef(
352
352
  bg: 'bg.subtle',
353
353
  color: 'fg.muted',
354
354
  borderColor: 'border.subtle',
355
+ // Nothing can be typed here, so hovering must not promise an edit.
356
+ _hover: {
357
+ borderColor: 'border.subtle',
358
+ },
355
359
  }}
356
360
  _disabled={{
357
361
  ...disabledControl,
@@ -152,6 +152,10 @@ What you still have to do:
152
152
  ask the user. Open a `Modal`.
153
153
  - A row that navigates should be a real link: `Menu.Item as={NextLink}
154
154
  href=…`, so middle-click and "open in new tab" still work.
155
+ - **Tooltip + Menu on one trigger: share `ids.trigger`.** Both make the
156
+ button their trigger and each gives it its own id, so the menu cannot find
157
+ its anchor and opens at the top-left of the page. Pass one `useId()` to
158
+ both: `<Menu ids={{ trigger: id }}><Tooltip ids={{ trigger: id }} …>`.
155
159
 
156
160
  ## Tokens
157
161
 
@@ -197,6 +201,10 @@ Menu가 알아서 하는 일
197
201
  묻지 않습니다. `Modal`을 엽니다.
198
202
  - 다른 페이지로 가는 줄은 실제 링크로 만듭니다. `Menu.Item as={NextLink} href=…`로
199
203
  쓰면 가운데 클릭과 "새 탭에서 열기"가 그대로 동작합니다.
204
+ - **한 버튼에 Tooltip과 Menu를 함께 걸 때는 `ids.trigger`를 같이 씁니다.** 둘 다 그 버튼을
205
+ 여는 요소로 삼고 각자 다른 id를 붙이므로, 메뉴가 기준 위치를 못 찾고 화면 왼쪽 위에서
206
+ 열립니다. `useId()` 하나를 양쪽에 넘깁니다:
207
+ `<Menu ids={{ trigger: id }}><Tooltip ids={{ trigger: id }} …>`.
200
208
 
201
209
  ## 토큰
202
210