@mindlogic-ai/logician-ui 3.1.0-alpha.6 → 3.1.0-alpha.7

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 (62) hide show
  1. package/dist/components/Table/ExpandingTr/ExpandingTr.types.d.ts +1 -1
  2. package/dist/components/Table/ExpandingTr/ExpandingTr.types.d.ts.map +1 -1
  3. package/dist/components/Table/Table.styles.d.ts +1 -1
  4. package/dist/components/Table/Table.styles.d.ts.map +1 -1
  5. package/dist/components/Table/Table.styles.js +5 -2
  6. package/dist/components/Table/Table.styles.js.map +1 -1
  7. package/dist/components/Table/Table.styles.mjs +5 -2
  8. package/dist/components/Table/Table.styles.mjs.map +1 -1
  9. package/dist/components/Table/Table.types.d.ts +13 -0
  10. package/dist/components/Table/Table.types.d.ts.map +1 -1
  11. package/dist/components/Table/Tbody.d.ts.map +1 -1
  12. package/dist/components/Table/Tbody.js +2 -8
  13. package/dist/components/Table/Tbody.js.map +1 -1
  14. package/dist/components/Table/Tbody.mjs +2 -8
  15. package/dist/components/Table/Tbody.mjs.map +1 -1
  16. package/dist/components/Table/Th.d.ts.map +1 -1
  17. package/dist/components/Table/Th.js +1 -1
  18. package/dist/components/Table/Th.js.map +1 -1
  19. package/dist/components/Table/Th.mjs +1 -1
  20. package/dist/components/Table/Th.mjs.map +1 -1
  21. package/dist/components/Table/Thead.d.ts +2 -2
  22. package/dist/components/Table/Thead.d.ts.map +1 -1
  23. package/dist/components/Table/Thead.js +2 -2
  24. package/dist/components/Table/Thead.js.map +1 -1
  25. package/dist/components/Table/Thead.mjs +2 -2
  26. package/dist/components/Table/Thead.mjs.map +1 -1
  27. package/dist/components/Table/Tr.d.ts +10 -2
  28. package/dist/components/Table/Tr.d.ts.map +1 -1
  29. package/dist/components/Table/Tr.js +14 -3
  30. package/dist/components/Table/Tr.js.map +1 -1
  31. package/dist/components/Table/Tr.mjs +14 -3
  32. package/dist/components/Table/Tr.mjs.map +1 -1
  33. package/dist/theme/colors.d.ts +31 -1
  34. package/dist/theme/colors.d.ts.map +1 -1
  35. package/dist/theme/colors.js +21 -0
  36. package/dist/theme/colors.js.map +1 -1
  37. package/dist/theme/colors.mjs +21 -0
  38. package/dist/theme/colors.mjs.map +1 -1
  39. package/dist/theme/index.d.ts.map +1 -1
  40. package/dist/theme/index.js +4 -0
  41. package/dist/theme/index.js.map +1 -1
  42. package/dist/theme/index.mjs +4 -0
  43. package/dist/theme/index.mjs.map +1 -1
  44. package/dist/theme/recipes/table.d.ts +19 -0
  45. package/dist/theme/recipes/table.d.ts.map +1 -0
  46. package/dist/theme/recipes/table.js +97 -0
  47. package/dist/theme/recipes/table.js.map +1 -0
  48. package/dist/theme/recipes/table.mjs +95 -0
  49. package/dist/theme/recipes/table.mjs.map +1 -0
  50. package/package.json +1 -1
  51. package/src/components/Table/ExpandingTr/ExpandingTr.types.ts +1 -1
  52. package/src/components/Table/Table.stories.tsx +104 -0
  53. package/src/components/Table/Table.styles.ts +5 -2
  54. package/src/components/Table/Table.types.ts +16 -0
  55. package/src/components/Table/Tbody.tsx +2 -20
  56. package/src/components/Table/Th.tsx +2 -1
  57. package/src/components/Table/Thead.tsx +4 -2
  58. package/src/components/Table/Tr.tsx +31 -3
  59. package/src/theme/SemanticTokens.mdx +3 -0
  60. package/src/theme/colors.ts +30 -1
  61. package/src/theme/index.ts +4 -0
  62. package/src/theme/recipes/table.ts +91 -0
@@ -7,6 +7,7 @@ import {
7
7
 
8
8
  import { colors, semanticTokens } from './colors';
9
9
  import { globalCss } from './global';
10
+ import { tableSlotRecipe } from './recipes/table';
10
11
 
11
12
  /**
12
13
  * Shared textStyle value objects for DRY principle
@@ -243,6 +244,9 @@ const config = defineConfig({
243
244
  colors: semanticTokens.colors,
244
245
  },
245
246
  textStyles,
247
+ slotRecipes: {
248
+ table: tableSlotRecipe,
249
+ },
246
250
  },
247
251
  });
248
252
 
@@ -0,0 +1,91 @@
1
+ import { defineSlotRecipe } from '@chakra-ui/react';
2
+
3
+ /**
4
+ * Logician overrides for Chakra's `table` slot recipe.
5
+ *
6
+ * Merged on top of Chakra's default table recipe by `createSystem`, so only
7
+ * the deltas live here. Everything uses semantic (mode-aware) tokens so a
8
+ * no-prop <Table> renders the correct header/border/text/hover in both light
9
+ * and dark mode — consumers should only override for genuine per-row state
10
+ * or layout.
11
+ */
12
+ export const tableSlotRecipe = defineSlotRecipe({
13
+ slots: ['root', 'header', 'body', 'row', 'columnHeader', 'cell'],
14
+ base: {
15
+ root: {
16
+ color: 'fg.default',
17
+ },
18
+ header: {
19
+ color: 'fg.muted',
20
+ fontWeight: 'medium',
21
+ // Opt-in sticky header affordance: <Thead sticky>
22
+ '&[data-sticky]': {
23
+ position: 'sticky',
24
+ top: 0,
25
+ // Above sticky-column cells (zIndex 2 in Table.styles.ts)
26
+ zIndex: 'docked',
27
+ bg: 'bg.surface',
28
+ // border-collapse leaves cell borders behind when the header sticks;
29
+ // the shadow keeps the bottom hairline visible while scrolled
30
+ boxShadow: '0 1px 0 0 {colors.border.subtle}',
31
+ },
32
+ },
33
+ body: {
34
+ fontWeight: 'medium',
35
+ // Remove the last row's bottom border so it doesn't double up with
36
+ // TableContainer's border. Both rules are needed under border-collapse:
37
+ // the row border comes from base.row, the cell border from Chakra's
38
+ // line variant.
39
+ '& > tr:last-of-type': {
40
+ borderBottom: 'none',
41
+ },
42
+ '& > tr:last-of-type > td': {
43
+ borderBottom: 'none',
44
+ },
45
+ },
46
+ row: {
47
+ borderBottomWidth: '1px',
48
+ borderBottomColor: 'border.subtle',
49
+ // Interactive styling is keyed off data-interactive, which <Tr> sets
50
+ // automatically when it receives onClick / role="button" / tabIndex —
51
+ // static tables never pick up hover/cursor styling.
52
+ '&[data-interactive]': {
53
+ cursor: 'pointer',
54
+ _hover: { bg: 'bg.muted' },
55
+ // Inset outline instead of the shared focusRing util (boxShadow
56
+ // ring): rows are clipped by TableContainer's rounded overflow,
57
+ // which would crop an outer ring.
58
+ _focusVisible: {
59
+ outline: '2px solid',
60
+ outlineColor: 'primary.main',
61
+ outlineOffset: '-2px',
62
+ },
63
+ },
64
+ // Row-state tints: set via <Tr state="..."> (data-selected /
65
+ // data-invalid / data-highlighted)
66
+ _selected: { bg: 'bg.selected' },
67
+ _invalid: { bg: 'bg.invalid.subtle' },
68
+ _highlighted: { bg: 'bg.highlighted' },
69
+ },
70
+ columnHeader: {
71
+ color: 'fg.muted',
72
+ fontWeight: 'medium',
73
+ bg: 'bg.subtle',
74
+ borderBottomWidth: '1px',
75
+ borderBottomColor: 'border.subtle',
76
+ },
77
+ cell: {
78
+ borderBottomColor: 'border.subtle',
79
+ },
80
+ },
81
+ variants: {
82
+ variant: {
83
+ line: {
84
+ // Chakra's line variant paints rows with the raw `bg` token (pure
85
+ // black in dark mode); keep rows transparent so the surface behind
86
+ // the table shows through and state tints/hover sit on top.
87
+ row: { bg: 'transparent' },
88
+ },
89
+ },
90
+ },
91
+ });