@godxjp/ui 31.4.0 → 31.6.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 (80) hide show
  1. package/agent/START-HERE.md +6 -6
  2. package/agent/components/BranchScopePicker.json +5 -0
  3. package/agent/components/Cascader.json +1 -1
  4. package/agent/components/CodeBlock.json +7 -1
  5. package/agent/components/DataTable.json +2 -2
  6. package/agent/components/InfiniteQueryState.json +6 -1
  7. package/agent/components/OrgChart.json +59 -0
  8. package/agent/components/RangeTimeline.json +6 -0
  9. package/agent/components/RecordPicker.json +10 -0
  10. package/agent/components/Transfer.json +5 -0
  11. package/agent/components/Tree.json +21 -4
  12. package/agent/components/TreeSelect.json +1 -1
  13. package/agent/components-index.json +5 -0
  14. package/agent/components.json +123 -10
  15. package/agent/index.json +7 -7
  16. package/agent/llms.txt +7 -7
  17. package/agent/tokens.json +114 -0
  18. package/dist/components/data-display/code-block.js +90 -4
  19. package/dist/components/data-display/data-table.d.ts +3 -0
  20. package/dist/components/data-display/data-table.js +415 -370
  21. package/dist/components/data-display/index.d.ts +2 -0
  22. package/dist/components/data-display/index.js +2 -0
  23. package/dist/components/data-display/org-chart.d.ts +5 -0
  24. package/dist/components/data-display/org-chart.js +169 -0
  25. package/dist/components/data-display/range-timeline.d.ts +20 -0
  26. package/dist/components/data-display/range-timeline.js +217 -197
  27. package/dist/components/data-display/tree.js +179 -23
  28. package/dist/components/data-entry/branch-scope-picker.d.ts +1 -0
  29. package/dist/components/data-entry/branch-scope-picker.js +2 -1
  30. package/dist/components/data-entry/cascader.js +4 -5
  31. package/dist/components/data-entry/record-picker.d.ts +2 -0
  32. package/dist/components/data-entry/record-picker.js +22 -3
  33. package/dist/components/data-entry/transfer.d.ts +1 -1
  34. package/dist/components/data-entry/transfer.js +5 -2
  35. package/dist/components/data-entry/tree-select.js +14 -5
  36. package/dist/components/general/typography.d.ts +32 -0
  37. package/dist/components/general/typography.js +11 -2
  38. package/dist/components/query/infinite-query-state.d.ts +1 -1
  39. package/dist/components/query/infinite-query-state.js +2 -1
  40. package/dist/contracts/measurement.json +1 -1
  41. package/dist/i18n/messages/en.json +26 -2
  42. package/dist/i18n/messages/ja.json +17 -2
  43. package/dist/i18n/messages/vi.json +17 -2
  44. package/dist/lib/hooks.d.ts +8 -4
  45. package/dist/lib/hooks.js +5 -2
  46. package/dist/lib/tree.d.ts +23 -0
  47. package/dist/lib/tree.js +29 -0
  48. package/dist/props/components/data-display.prop.d.ts +72 -3
  49. package/dist/props/components/data-entry.prop.d.ts +31 -4
  50. package/dist/props/components/query.prop.d.ts +8 -1
  51. package/dist/props/registry.d.ts +63 -6
  52. package/dist/props/registry.js +90 -4
  53. package/dist/props/vocabulary/data.prop.d.ts +32 -2
  54. package/dist/props/vocabulary/index.d.ts +1 -1
  55. package/dist/styles/data-display-layout.css +225 -0
  56. package/dist/styles/layers.json +14 -1
  57. package/dist/styles/table-layout.css +16 -1
  58. package/dist/tokens/base.css +1 -0
  59. package/dist/tokens/components/org-chart.css +27 -0
  60. package/dist/tokens/components/tree.css +2 -0
  61. package/docs/FRAME-COVERAGE-REPORT.md +3 -2
  62. package/docs/data-display/code-block.tsx +27 -0
  63. package/docs/data-display/data-table/examples/server-paged.tsx +23 -0
  64. package/docs/data-display/data-table/index.md +2 -0
  65. package/docs/data-display/org-chart.tsx +165 -0
  66. package/docs/data-display/timeline.tsx +33 -0
  67. package/docs/data-display/tree.tsx +154 -0
  68. package/docs/data-entry/branch-scope-picker.tsx +6 -1
  69. package/docs/data-entry/record-picker.tsx +1 -0
  70. package/docs/data-entry/transfer.tsx +1 -0
  71. package/docs/i18n/messages/en.json +19 -0
  72. package/docs/i18n/messages/ja.json +18 -0
  73. package/docs/i18n/messages/vi.json +18 -0
  74. package/docs/navigation/tabs.tsx +17 -15
  75. package/docs/query/data-state.tsx +2 -4
  76. package/docs/query/infinite-query-state.tsx +5 -1
  77. package/docs/roadmap/tree-components.md +2 -1
  78. package/docs/showcase/table-view-tabs.tsx +1 -1
  79. package/package.json +2 -2
  80. package/scripts/ui-audit.mjs +15 -5
@@ -1916,6 +1916,16 @@ for (const dir of SCAN_DIRS) {
1916
1916
  */
1917
1917
  const stack = [];
1918
1918
  const bareByParent = new Map();
1919
+ /*
1920
+ * Every exported tag that renders @godxjp/ui's <Form> around its children (gh#1039). A field
1921
+ * under any of them has the Form layout context, so it must count like a literal <Form>.
1922
+ * `FormRoot` (@godxjp/ui/form, src/form/form-root.tsx) wraps its <form> in <Form asChild>
1923
+ * whenever a layout prop is set, and is the form shell with one stacked layout otherwise.
1924
+ * Pagination also renders <Form>, but around its own controls, not a consumer's fields. Add a
1925
+ * tag here when another exported wrapper starts rendering <Form> around children.
1926
+ */
1927
+ const FORM_TAGS = new Set(["Form", "FormRoot"]);
1928
+ const formOpenTag = new RegExp(`<(${[...FORM_TAGS].join("|")})(?=[\\s>])([^>]*)>`, "g");
1919
1929
  let formDepth = 0;
1920
1930
  for (const m of scanContent.matchAll(
1921
1931
  /(?<![\w.$])<(\/?)([A-Za-z][\w.]*)(?=[\s>/])([^<>]*?(?:\{[^{}]*\}[^<>]*?)*)(\/?)>/g,
@@ -1928,7 +1938,7 @@ for (const dir of SCAN_DIRS) {
1928
1938
  break;
1929
1939
  }
1930
1940
  }
1931
- if (tag === "Form") formDepth = Math.max(0, formDepth - 1);
1941
+ if (FORM_TAGS.has(tag)) formDepth = Math.max(0, formDepth - 1);
1932
1942
  continue;
1933
1943
  }
1934
1944
  if (tag === "FormField" && formDepth === 0) {
@@ -1937,7 +1947,7 @@ for (const dir of SCAN_DIRS) {
1937
1947
  }
1938
1948
  if (selfClose) continue;
1939
1949
  stack.push({ tag, index: m.index });
1940
- if (tag === "Form") formDepth += 1;
1950
+ if (FORM_TAGS.has(tag)) formDepth += 1;
1941
1951
  }
1942
1952
  for (const group of bareByParent.values()) {
1943
1953
  if (group.length < 2) continue;
@@ -1975,9 +1985,9 @@ for (const dir of SCAN_DIRS) {
1975
1985
  for (const m of scanContent.matchAll(/<FormField(?=[\s>])([^>]*)>([\s\S]*?)<\/FormField>/g)) {
1976
1986
  if (!/<Select(?=[\s>/])/.test(m[2]) || /controlWidth=/.test(m[1])) continue;
1977
1987
  const before = scanContent.slice(0, m.index);
1978
- const lastForm = [...before.matchAll(/<Form(?=[\s>])([^>]*)>/g)].at(-1);
1979
- const insideForm = lastForm && before.lastIndexOf("</Form>") < lastForm.index;
1980
- if (insideForm && /controlWidth=/.test(lastForm[1])) continue;
1988
+ const lastForm = [...before.matchAll(formOpenTag)].at(-1);
1989
+ const insideForm = lastForm && before.lastIndexOf(`</${lastForm[1]}>`) < lastForm.index;
1990
+ if (insideForm && /controlWidth=/.test(lastForm[2])) continue;
1981
1991
  const lineNo = lineAt(m.index);
1982
1992
  if (suppressed("select-width-hint", lineNo - 1)) continue;
1983
1993
  findings.push({