gridsmith-ui 0.29.1 → 0.30.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 (88) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +5 -1
  3. package/dist/DropdownMenu-DqT7ZQ0D.d.ts +39 -0
  4. package/dist/charts.js +4 -2
  5. package/dist/charts.js.map +1 -1
  6. package/dist/chat.js +4 -4
  7. package/dist/{chunk-OYNUU346.js → chunk-7QLXYRPD.js} +3 -12
  8. package/dist/chunk-7QLXYRPD.js.map +1 -0
  9. package/dist/chunk-F2BNJSON.js +1348 -0
  10. package/dist/chunk-F2BNJSON.js.map +1 -0
  11. package/dist/{chunk-37WOC7F7.js → chunk-GQVBZ4GW.js} +29 -8
  12. package/dist/chunk-GQVBZ4GW.js.map +1 -0
  13. package/dist/{chunk-MFAWJSMJ.js → chunk-INGF2CPW.js} +3 -22
  14. package/dist/chunk-INGF2CPW.js.map +1 -0
  15. package/dist/{chunk-I3MTQ3CS.js → chunk-KTPGMJUK.js} +5 -5
  16. package/dist/{chunk-I3MTQ3CS.js.map → chunk-KTPGMJUK.js.map} +1 -1
  17. package/dist/{chunk-MKFWHWBK.js → chunk-L6HWACK7.js} +7 -7
  18. package/dist/chunk-L6HWACK7.js.map +1 -0
  19. package/dist/chunk-LJYSVZMI.js +25 -0
  20. package/dist/chunk-LJYSVZMI.js.map +1 -0
  21. package/dist/{chunk-FUKSLQ77.js → chunk-NI5542ZM.js} +39 -35
  22. package/dist/chunk-NI5542ZM.js.map +1 -0
  23. package/dist/chunk-NKUCS67T.js +13 -0
  24. package/dist/chunk-NKUCS67T.js.map +1 -0
  25. package/dist/{chunk-RECCCA7Z.js → chunk-NLXQ323J.js} +4 -4
  26. package/dist/{chunk-RECCCA7Z.js.map → chunk-NLXQ323J.js.map} +1 -1
  27. package/dist/{chunk-ZI3OQDET.js → chunk-OIOII5L6.js} +93 -4
  28. package/dist/chunk-OIOII5L6.js.map +1 -0
  29. package/dist/{chunk-RJEUQ7RL.js → chunk-Q36JVJX4.js} +46 -89
  30. package/dist/chunk-Q36JVJX4.js.map +1 -0
  31. package/dist/{chunk-FD4YED7O.js → chunk-RHWTMTU5.js} +3 -3
  32. package/dist/{chunk-FD4YED7O.js.map → chunk-RHWTMTU5.js.map} +1 -1
  33. package/dist/chunk-TYNDXMBV.js +105 -0
  34. package/dist/chunk-TYNDXMBV.js.map +1 -0
  35. package/dist/{chunk-4TUJXDRU.js → chunk-UNS4TGGK.js} +20 -11
  36. package/dist/chunk-UNS4TGGK.js.map +1 -0
  37. package/dist/chunk-Z4MCD73B.js +316 -0
  38. package/dist/chunk-Z4MCD73B.js.map +1 -0
  39. package/dist/data-grid.d.ts +25 -6
  40. package/dist/data-grid.js +177 -55
  41. package/dist/data-grid.js.map +1 -1
  42. package/dist/editor-mentions.js +1 -1
  43. package/dist/editor.js +3 -3
  44. package/dist/{feather-FNBQ74RR.js → feather-XFFEFLTV.js} +5 -3
  45. package/dist/feather-XFFEFLTV.js.map +1 -0
  46. package/dist/{heroicons-DODCSYWD.js → heroicons-L6DOHBEA.js} +5 -3
  47. package/dist/heroicons-L6DOHBEA.js.map +1 -0
  48. package/dist/icons.d.ts +1 -1
  49. package/dist/icons.js +1 -1
  50. package/dist/index.d.ts +138 -39
  51. package/dist/index.js +660 -1568
  52. package/dist/index.js.map +1 -1
  53. package/dist/kanban.d.ts +26 -8
  54. package/dist/kanban.js +200 -76
  55. package/dist/kanban.js.map +1 -1
  56. package/dist/{lucide-ZWE3EPGP.js → lucide-JOORDTO6.js} +5 -3
  57. package/dist/lucide-JOORDTO6.js.map +1 -0
  58. package/dist/{phosphor-DIHPA4AJ.js → phosphor-TKGDYNGR.js} +5 -3
  59. package/dist/phosphor-TKGDYNGR.js.map +1 -0
  60. package/dist/resizable.js +10 -9
  61. package/dist/resizable.js.map +1 -1
  62. package/dist/roots.css +12 -8
  63. package/dist/{table-utils-CxnpFHRF.d.ts → table-utils-BXkP-2Hx.d.ts} +3 -1
  64. package/dist/{tabler-D3VYTSGI.js → tabler-YGETLYRU.js} +5 -3
  65. package/dist/tabler-YGETLYRU.js.map +1 -0
  66. package/dist/tokens.css +14 -0
  67. package/dist/utils.js.map +1 -1
  68. package/dist/virtualized.js +8 -7
  69. package/dist/virtualized.js.map +1 -1
  70. package/dist-static/tokens.css +14 -0
  71. package/package.json +1 -1
  72. package/dist/chunk-37WOC7F7.js.map +0 -1
  73. package/dist/chunk-4TUJXDRU.js.map +0 -1
  74. package/dist/chunk-FUKSLQ77.js.map +0 -1
  75. package/dist/chunk-MFAWJSMJ.js.map +0 -1
  76. package/dist/chunk-MKFWHWBK.js.map +0 -1
  77. package/dist/chunk-OYNUU346.js.map +0 -1
  78. package/dist/chunk-QM4SJKWV.js +0 -51
  79. package/dist/chunk-QM4SJKWV.js.map +0 -1
  80. package/dist/chunk-QNHVPE2B.js +0 -117
  81. package/dist/chunk-QNHVPE2B.js.map +0 -1
  82. package/dist/chunk-RJEUQ7RL.js.map +0 -1
  83. package/dist/chunk-ZI3OQDET.js.map +0 -1
  84. package/dist/feather-FNBQ74RR.js.map +0 -1
  85. package/dist/heroicons-DODCSYWD.js.map +0 -1
  86. package/dist/lucide-ZWE3EPGP.js.map +0 -1
  87. package/dist/phosphor-DIHPA4AJ.js.map +0 -1
  88. package/dist/tabler-D3VYTSGI.js.map +0 -1
package/dist/chat.js CHANGED
@@ -1,9 +1,9 @@
1
1
  "use client";
2
- import { Divider, CodeBlock, Link } from './chunk-I3MTQ3CS.js';
3
- import './chunk-RECCCA7Z.js';
4
- import './chunk-37WOC7F7.js';
2
+ import { Divider, CodeBlock, Link } from './chunk-KTPGMJUK.js';
3
+ import './chunk-NLXQ323J.js';
4
+ import './chunk-GQVBZ4GW.js';
5
5
  import './chunk-7Q46JXSK.js';
6
- import './chunk-MKFWHWBK.js';
6
+ import './chunk-L6HWACK7.js';
7
7
  import './chunk-HP7WUZPK.js';
8
8
  import './chunk-WH2FUFAC.js';
9
9
  import { cn } from './chunk-JTU7OBYJ.js';
@@ -1,13 +1,4 @@
1
1
  "use client";
2
- // ../../showcase/src/lib/element-type.ts
3
- var LAZY = /* @__PURE__ */ Symbol.for("react.lazy");
4
- var isLazy = (type) => type !== null && typeof type === "object" && type.$$typeof === LAZY && typeof type._init === "function";
5
- function elementType(type) {
6
- let resolved = type;
7
- for (let step = 0; step < 8 && isLazy(resolved); step++) resolved = resolved._init(resolved._payload);
8
- return resolved;
9
- }
10
-
11
2
  // ../../showcase/src/lib/format-locale.ts
12
3
  var last = null;
13
4
  var FIXED_FORM = "en";
@@ -73,6 +64,6 @@ function choose(page, spoken) {
73
64
  }
74
65
  }
75
66
 
76
- export { FIXED_FORM, browserLanguages, elementType, formatLocale, localeChoice, localeFor };
77
- //# sourceMappingURL=chunk-OYNUU346.js.map
78
- //# sourceMappingURL=chunk-OYNUU346.js.map
67
+ export { FIXED_FORM, browserLanguages, formatLocale, localeChoice, localeFor };
68
+ //# sourceMappingURL=chunk-7QLXYRPD.js.map
69
+ //# sourceMappingURL=chunk-7QLXYRPD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../showcase/src/lib/format-locale.ts"],"names":[],"mappings":"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","file":"chunk-7QLXYRPD.js","sourcesContent":["/** The last page language and visitor's languages read, and the locale they gave: formatting runs often, they change rarely. */\nlet last: { key: string; locale: string | undefined } | null = null;\n\n/**\n * The form a server-rendered page is written in without LocaleProvider, and what the library writes on a server where no\n * locale is given: an explicit locale, the same on every machine and on both sides of hydration (Sprint 25.20 D2).\n */\nexport const FIXED_FORM = \"en\";\n\n/**\n * The locale the library writes dates, times and numbers in: the app's language, the page's `lang`, in the visitor's own\n * formats where they speak it (Sprint 25.17, the owner's decision of 2 October). An English page shows \"5 minutes ago\"\n * and \"250K\" to a visitor whose browser is Japanese, where it showed \"5 分前\" and \"25万\" in a page of English (WCAG 3.1.2:\n * text in the page's language needs no `lang` of its own), and a British visitor to it keeps \"1 Oct 2026\". The visitor's\n * form counts only in the page's script: a page in traditional Chinese stays traditional for a visitor who reads\n * simplified. A page with no `lang` is written in the browser's language, as before. On a server, where there is no page,\n * English (\"en\"), never the machine's own language (Sprint 25.22's review): server code passes requestLocale's choice.\n */\nexport function formatLocale(): string | undefined {\n if (typeof document === \"undefined\") return FIXED_FORM;\n const page = document.documentElement.lang?.trim();\n if (!page) return undefined;\n return localeFor(page, browserLanguages());\n}\n\n/** The browser's languages, in its order (`navigator.languages`), or none where there is no browser. */\nexport function browserLanguages(): readonly string[] {\n if (typeof navigator === \"undefined\") return [];\n return navigator.languages?.length ? navigator.languages : navigator.language ? [navigator.language] : [];\n}\n\n/**\n * The locale for a page language and the languages a visitor speaks, in their order: the visitor's form of the page's\n * language where they speak it, else the page's own (Sprint 25.20: the same choice on a server, from the request's\n * languages, and in the browser). Undefined for a page language Intl can't read.\n */\nexport function localeFor(page: string, spoken: readonly string[]): string | undefined {\n const key = `${page}|${spoken.join(\",\")}`;\n if (last?.key !== key) last = { key, locale: choose(page, spoken) };\n return last.locale;\n}\n\n/** What a server-rendered app hands the library at its top: the page's language, and the visitor's from the request. */\nexport interface LocaleChoice {\n /** The page's language, as `<html lang>` says, or \"en\". */\n lang: string;\n /** The request's languages, in a browser's order; empty without the header. */\n spoken: string[];\n /** Whether the request's header was given. */\n hasHeader: boolean;\n /** The locale the server writes in, and the browser while it hydrates. */\n server: string;\n}\n\n/** What LocaleProvider hands down for a page language and a request's Accept-Language header. */\nexport function localeChoice(lang: string | undefined, acceptLanguage: string | null | undefined): LocaleChoice {\n const page = lang?.trim() || FIXED_FORM;\n const spoken = acceptedLanguages(acceptLanguage);\n return { lang: page, spoken, hasHeader: !!acceptLanguage, server: localeFor(page, spoken) ?? FIXED_FORM };\n}\n\n/**\n * The locale LocaleProvider writes in on the server for a page language and a request's Accept-Language header (Sprint\n * 25.22's review), for server code's own dates and numbers: a server page passes it to the helpers from\n * `gridsmith-ui/utils`, so its words read as the components' beside them. `requestLocale(LANG, (await\n * headers()).get('accept-language'))`.\n */\nexport function requestLocale(lang: string | undefined, acceptLanguage?: string | null): string {\n return localeChoice(lang, acceptLanguage).server;\n}\n\n/** The most of a request's languages read: browsers send a handful. */\nconst MAX_LANGUAGES = 20;\n\n/**\n * A request's `Accept-Language` header as the languages a browser lists (Sprint 25.20 L1): highest quality first, ties in\n * the header's order, \"*\" and anything with q=0 left out. \"en-GB,en;q=0.9,fr;q=0.8\" is [\"en-GB\", \"en\", \"fr\"].\n */\nexport function acceptedLanguages(header: string | null | undefined): string[] {\n if (!header) return [];\n const read: Array<{ tag: string; q: number; at: number }> = [];\n // a browser lists a handful; a header made up to be long reads no further than the first twenty (the review)\n header.split(\",\").slice(0, MAX_LANGUAGES).forEach((part, at) => {\n const [tag, ...params] = part.trim().split(\";\");\n const name = tag?.trim();\n if (!name || name === \"*\") return;\n const qParam = params.map((p) => p.trim()).find((p) => /^q=/i.test(p));\n const q = qParam ? Number(qParam.slice(2)) : 1;\n if (!(q > 0)) return;\n read.push({ tag: name, q, at });\n });\n return read.sort((a, b) => b.q - a.q || a.at - b.at).map((r) => r.tag);\n}\n\n/** The language and script a tag is written in: \"en\" and \"en-GB\" are both \"en-Latn\"; \"zh-TW\" is \"zh-Hant\", \"zh-CN\" \"zh-Hans\". */\nfunction writtenIn(tag: string): string | null {\n try {\n const locale = new Intl.Locale(tag).maximize();\n return `${locale.language}-${locale.script ?? \"\"}`;\n } catch {\n return null;\n }\n}\n\n/**\n * A visitor's tag as its language, script and region (Sprint 25.20's review): a request's header can carry private-use,\n * extension and variant parts (\"en-x-…\", \"en-GB-u-nu-thai\") that would change the digits a server writes and make every\n * cache keyed by locale grow with each new header. Read by syntax alone, so a server and a browser reduce a tag alike.\n */\nfunction plainTag(tag: string): string | undefined {\n try {\n const locale = new Intl.Locale(tag);\n return [locale.language, locale.script, locale.region].filter(Boolean).join(\"-\");\n } catch {\n return undefined;\n }\n}\n\nfunction choose(page: string, spoken: readonly string[]): string | undefined {\n const language = writtenIn(page);\n // a tag Intl can't read: the browser's language\n if (language === null) return undefined;\n // the visitor's own form of the page's language (\"en-GB\" for an \"en\" page), wherever it is in their list; else the page's\n const own = spoken.find((tag) => typeof tag === \"string\" && writtenIn(tag) === language);\n try {\n return Intl.getCanonicalLocales((own && plainTag(own)) || page)[0];\n } catch {\n return undefined;\n }\n}\n"]}