@nxgt/material 3.34.0 → 3.35.1

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 (172) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +4 -4
  3. package/dist/{async-slice-C9q_eMJD.js → async-slice-BNI_F0jz.js} +2 -2
  4. package/dist/{button-CoAu_GuF.js → button-EMWOFSDB.js} +1 -1
  5. package/dist/charts.js +3 -3
  6. package/dist/{chip-Ch21Qbnj.js → chip-B6m3yagf.js} +1 -1
  7. package/dist/{code-editor-CEdEmolU.js → code-editor-BdiufnpC.js} +4 -4
  8. package/dist/code-editor.js +4 -4
  9. package/dist/{code-language-items-BNMM7YlZ.js → code-language-items-v5Rnq425.js} +2 -2
  10. package/dist/{components-BM9WHviO.js → components-jh9l5bIA.js} +16962 -14252
  11. package/dist/components.js +26 -26
  12. package/dist/{dialog-C_U4twIJ.js → dialog-Cdv9IXVo.js} +1 -1
  13. package/dist/dnd.js +1 -1
  14. package/dist/{dropdown-menu-DSgkmogX.js → dropdown-menu-CpSnRXd-.js} +1 -1
  15. package/dist/editor.js +7 -7
  16. package/dist/{empty-state-CJZ0sVE8.js → empty-state-DMr94lsF.js} +1 -1
  17. package/dist/hooks.js +2 -2
  18. package/dist/{i18n-provider-CLq-1Qgc.js → i18n-provider-A4mI4vc1.js} +1 -1
  19. package/dist/i18n.js +5 -5
  20. package/dist/{icon-badge-Dssl4rfn.js → icon-badge-BFScQnp9.js} +1 -1
  21. package/dist/lib/components/ui/collections/server-table/bulk-action-targets.d.ts +6 -5
  22. package/dist/lib/components/ui/collections/server-table/bulk-action.d.ts +6 -5
  23. package/dist/lib/components/ui/collections/server-table/partials/server-table-bulk-buttons.d.ts +6 -5
  24. package/dist/lib/components/ui/collections/server-table/selected-rows.d.ts +17 -0
  25. package/dist/lib/components/ui/collections/server-table/use-query-selection.d.ts +6 -1
  26. package/dist/lib/components/ui/collections/server-table/use-server-table-selection.d.ts +3 -1
  27. package/dist/lib/components/ui/collections/server-table/use-server-table.d.ts +1 -0
  28. package/dist/lib/components/ui/dates/picker-trigger/typed-box-compact.d.ts +12 -0
  29. package/dist/lib/components/ui/dates/picker-trigger/typed-box.d.ts +6 -2
  30. package/dist/lib/components/ui/dates/picker-trigger/typed-trigger.d.ts +3 -2
  31. package/dist/lib/components/ui/dates/time-field/index.d.ts +1 -0
  32. package/dist/lib/components/ui/dates/time-field/partials/time-field-body.d.ts +2 -1
  33. package/dist/lib/components/ui/dates/time-field/partials/time-field-entry.d.ts +1 -0
  34. package/dist/lib/components/ui/dates/time-field/partials/time-field-typed.d.ts +2 -2
  35. package/dist/lib/components/ui/dates/time-field/time-field.d.ts +6 -1
  36. package/dist/lib/components/ui/dates/time-field/time-string-field.d.ts +14 -0
  37. package/dist/lib/components/ui/fields/attributes/attribute-dialog.d.ts +3 -1
  38. package/dist/lib/components/ui/fields/attributes/attribute-form/attribute-form.d.ts +3 -1
  39. package/dist/lib/components/ui/fields/attributes/attribute-form/attribute-text-form-fields.d.ts +6 -0
  40. package/dist/lib/components/ui/fields/attributes/attribute-form/consts.d.ts +7 -6
  41. package/dist/lib/components/ui/fields/attributes/attribute-form/use-attribute-form.d.ts +44 -0
  42. package/dist/lib/components/ui/fields/attributes/attributes-editor.d.ts +22 -0
  43. package/dist/lib/components/ui/fields/attributes/attributes-field/attributes-dialog-field.d.ts +14 -0
  44. package/dist/lib/components/ui/fields/attributes/attributes-field/attributes-field.d.ts +14 -12
  45. package/dist/lib/components/ui/fields/attributes/attributes-field/attributes-inline-field.d.ts +8 -0
  46. package/dist/lib/components/ui/fields/attributes/attributes-field/use-dialog-field.d.ts +15 -0
  47. package/dist/lib/components/ui/fields/attributes/attributes-form-field/attributes-form-field.d.ts +7 -1
  48. package/dist/lib/components/ui/fields/attributes/attributes-summary.d.ts +22 -0
  49. package/dist/lib/components/ui/fields/attributes/index.d.ts +3 -0
  50. package/dist/lib/components/ui/fields/attributes/logic/names.d.ts +13 -0
  51. package/dist/lib/components/ui/fields/attributes/logic/order.d.ts +15 -0
  52. package/dist/lib/components/ui/fields/attributes/logic/reorder-keys.d.ts +9 -0
  53. package/dist/lib/components/ui/fields/attributes/logic/value.d.ts +42 -0
  54. package/dist/lib/components/ui/fields/attributes/models/attribute.d.ts +5 -1
  55. package/dist/lib/components/ui/fields/attributes/partials/attribute-row.d.ts +18 -0
  56. package/dist/lib/components/ui/fields/attributes/partials/default-choices.d.ts +5 -0
  57. package/dist/lib/components/ui/fields/attributes/partials/default-field.d.ts +12 -0
  58. package/dist/lib/components/ui/fields/attributes/partials/default-inputs.d.ts +16 -0
  59. package/dist/lib/components/ui/fields/attributes/partials/editor-notes.d.ts +11 -0
  60. package/dist/lib/components/ui/fields/attributes/partials/labeled.d.ts +10 -0
  61. package/dist/lib/components/ui/fields/attributes/partials/name-field.d.ts +15 -0
  62. package/dist/lib/components/ui/fields/attributes/partials/options-field.d.ts +11 -0
  63. package/dist/lib/components/ui/fields/attributes/partials/phone-sheet.d.ts +12 -0
  64. package/dist/lib/components/ui/fields/attributes/partials/reorder-handle.d.ts +19 -0
  65. package/dist/lib/components/ui/fields/attributes/partials/row-fields.d.ts +16 -0
  66. package/dist/lib/components/ui/fields/attributes/partials/row-footer.d.ts +12 -0
  67. package/dist/lib/components/ui/fields/attributes/partials/row-head.d.ts +12 -0
  68. package/dist/lib/components/ui/fields/attributes/partials/row-panel.d.ts +15 -0
  69. package/dist/lib/components/ui/fields/attributes/partials/rows-dnd.d.ts +11 -0
  70. package/dist/lib/components/ui/fields/attributes/partials/simple-fields.d.ts +20 -0
  71. package/dist/lib/components/ui/fields/attributes/partials/summary-item.d.ts +9 -0
  72. package/dist/lib/components/ui/fields/attributes/partials/type-icon.d.ts +13 -0
  73. package/dist/lib/components/ui/fields/attributes/partials/value-text.d.ts +12 -0
  74. package/dist/lib/components/ui/fields/attributes/schema.d.ts +32 -0
  75. package/dist/lib/components/ui/fields/attributes/use-announce.d.ts +14 -0
  76. package/dist/lib/components/ui/fields/attributes/use-attribute-text.d.ts +13 -0
  77. package/dist/lib/components/ui/fields/attributes/use-attributes-editor.d.ts +34 -0
  78. package/dist/lib/components/ui/fields/attributes/use-reorder.d.ts +26 -0
  79. package/dist/lib/components/ui/fields/contacts/contacts-dialog-form-field.d.ts +9 -0
  80. package/dist/lib/components/ui/fields/contacts/contacts-editor.d.ts +29 -0
  81. package/dist/lib/components/ui/fields/contacts/contacts-form-field.d.ts +14 -1
  82. package/dist/lib/components/ui/fields/contacts/contacts-summary.d.ts +23 -0
  83. package/dist/lib/components/ui/fields/contacts/index.d.ts +3 -0
  84. package/dist/lib/components/ui/fields/contacts/logic/check-contact.d.ts +11 -0
  85. package/dist/lib/components/ui/fields/contacts/logic/contact-action.d.ts +11 -0
  86. package/dist/lib/components/ui/fields/contacts/logic/duplicates.d.ts +17 -0
  87. package/dist/lib/components/ui/fields/contacts/logic/issues.d.ts +7 -0
  88. package/dist/lib/components/ui/fields/contacts/logic/primary.d.ts +33 -0
  89. package/dist/lib/components/ui/fields/contacts/models.d.ts +7 -0
  90. package/dist/lib/components/ui/fields/contacts/partials/contact-fields.d.ts +29 -0
  91. package/dist/lib/components/ui/fields/contacts/partials/contact-links.d.ts +15 -0
  92. package/dist/lib/components/ui/fields/contacts/partials/contact-row.d.ts +14 -0
  93. package/dist/lib/components/ui/fields/contacts/partials/phone-sheet.d.ts +14 -0
  94. package/dist/lib/components/ui/fields/contacts/partials/quick-add.d.ts +12 -0
  95. package/dist/lib/components/ui/fields/contacts/partials/row-actions.d.ts +16 -0
  96. package/dist/lib/components/ui/fields/contacts/partials/summary-item.d.ts +11 -0
  97. package/dist/lib/components/ui/fields/contacts/partials/summary-row.d.ts +14 -0
  98. package/dist/lib/components/ui/fields/contacts/partials/type-group.d.ts +15 -0
  99. package/dist/lib/components/ui/fields/contacts/partials/type-icon.d.ts +12 -0
  100. package/dist/lib/components/ui/fields/contacts/partials/value-field.d.ts +25 -0
  101. package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +2 -0
  102. package/dist/lib/components/ui/fields/contacts/schema.d.ts +18 -0
  103. package/dist/lib/components/ui/fields/contacts/use-contact-text.d.ts +9 -0
  104. package/dist/lib/components/ui/fields/contacts/use-contacts-editor.d.ts +33 -0
  105. package/dist/lib/components/ui/fields/inline-editor/action-tone.d.ts +2 -0
  106. package/dist/lib/components/ui/fields/inline-editor/editor-header.d.ts +19 -0
  107. package/dist/lib/components/ui/fields/inline-editor/editor-sheet.d.ts +20 -0
  108. package/dist/lib/components/ui/fields/inline-editor/empty-summary.d.ts +19 -0
  109. package/dist/lib/components/ui/fields/inline-editor/use-focus-request.d.ts +13 -0
  110. package/dist/lib/components/ui/fields/inline-editor/use-row-ids.d.ts +13 -0
  111. package/dist/lib/components/ui/fields/opening-hours/consts.d.ts +17 -3
  112. package/dist/lib/components/ui/fields/opening-hours/index.d.ts +2 -0
  113. package/dist/lib/components/ui/fields/opening-hours/logic/edit-days.d.ts +9 -0
  114. package/dist/lib/components/ui/fields/opening-hours/logic/first-day.d.ts +14 -0
  115. package/dist/lib/components/ui/fields/opening-hours/logic/format.d.ts +6 -0
  116. package/dist/lib/components/ui/fields/opening-hours/logic/group.d.ts +13 -0
  117. package/dist/lib/components/ui/fields/opening-hours/logic/range-errors.d.ts +20 -0
  118. package/dist/lib/components/ui/fields/opening-hours/logic/status.d.ts +19 -0
  119. package/dist/lib/components/ui/fields/opening-hours/logic/week.d.ts +32 -0
  120. package/dist/lib/components/ui/fields/opening-hours/logic/zoned.d.ts +10 -0
  121. package/dist/lib/components/ui/fields/opening-hours/opening-hours-dialog-form-field.d.ts +10 -0
  122. package/dist/lib/components/ui/fields/opening-hours/opening-hours-editor.d.ts +26 -0
  123. package/dist/lib/components/ui/fields/opening-hours/opening-hours-form-field.d.ts +17 -1
  124. package/dist/lib/components/ui/fields/opening-hours/opening-hours-summary.d.ts +32 -0
  125. package/dist/lib/components/ui/fields/opening-hours/partials/copy-chips.d.ts +12 -0
  126. package/dist/lib/components/ui/fields/opening-hours/partials/copy-menu.d.ts +10 -0
  127. package/dist/lib/components/ui/fields/opening-hours/partials/day-controls.d.ts +14 -0
  128. package/dist/lib/components/ui/fields/opening-hours/partials/day-row.d.ts +15 -0
  129. package/dist/lib/components/ui/fields/opening-hours/partials/day-summary-row.d.ts +15 -0
  130. package/dist/lib/components/ui/fields/opening-hours/partials/group-row.d.ts +13 -0
  131. package/dist/lib/components/ui/fields/opening-hours/partials/phone-sheet.d.ts +18 -0
  132. package/dist/lib/components/ui/fields/opening-hours/partials/range-field-props.d.ts +28 -0
  133. package/dist/lib/components/ui/fields/opening-hours/partials/range-row.d.ts +24 -0
  134. package/dist/lib/components/ui/fields/opening-hours/partials/status-pill.d.ts +13 -0
  135. package/dist/lib/components/ui/fields/opening-hours/use-first-day.d.ts +8 -0
  136. package/dist/lib/components/ui/fields/opening-hours/use-hours-editor.d.ts +26 -0
  137. package/dist/lib/components/ui/fields/opening-hours/use-hours-text.d.ts +8 -0
  138. package/dist/lib/components/ui/fields/opening-hours/use-now.d.ts +6 -0
  139. package/dist/lib/i18n/resources/en/en.d.ts +75 -0
  140. package/dist/lib/i18n/resources/en/material.json.d.ts +86 -11
  141. package/dist/lib/i18n/resources/fr/fr.d.ts +75 -0
  142. package/dist/lib/i18n/resources/fr/material.json.d.ts +86 -11
  143. package/dist/lib/i18n/resources/resources.d.ts +150 -0
  144. package/dist/lib/i18n/translator.d.ts +1 -1
  145. package/dist/lib.js +1 -1
  146. package/dist/main.js +43 -43
  147. package/dist/map.js +4 -4
  148. package/dist/material.css +1 -1
  149. package/dist/pdf-reader.js +1 -1
  150. package/dist/print.js +2 -2
  151. package/dist/{public-CX7FN97X.js → public-CYdnlHqA.js} +6 -6
  152. package/dist/{rich-code-block-cc1NZtbD.js → rich-code-block-Bwhfhu7J.js} +4 -4
  153. package/dist/{sortable-provider-D43VdFMP.js → sortable-provider-CY_YD3Ee.js} +1 -1
  154. package/dist/{spinner-wKfFAVU9.js → spinner-CKlDba5I.js} +1 -1
  155. package/dist/{stored-language-D73ujVW4.js → stored-language-CfQGHLq9.js} +176 -22
  156. package/dist/theme-picker.js +2 -2
  157. package/dist/{theme-toggle-Drab-hke.js → theme-toggle--Zcf5AM8.js} +1 -1
  158. package/dist/{toolbar-items-D7R9YtYx.js → toolbar-items-B1W-uVHS.js} +2 -2
  159. package/dist/{translate-material-CdpLjkcD.js → translate-material-xDh10aWZ.js} +2 -2
  160. package/dist/{translator-BE-yEb0p.js → translator-BbOZntEF.js} +1 -1
  161. package/dist/{use-chat-composer-CpKh8564.js → use-chat-composer-CoyqPKbt.js} +12 -12
  162. package/dist/{use-heading-spy-DgWhvYfh.js → use-heading-spy-DXYCeegh.js} +1 -1
  163. package/dist/{use-material-translation-Da9Ponn5.js → use-material-translation-BK2YYCY3.js} +2 -2
  164. package/docs/components/data-table-filter-and-lists.md +10 -3
  165. package/docs/components/date-and-time.md +9 -1
  166. package/docs/components/form-fields.md +298 -67
  167. package/docs/guides/forms.md +18 -12
  168. package/docs/guides/i18n.md +1 -1
  169. package/docs/guides/ssr.md +1 -0
  170. package/docs/previews/form-fields-contacts.webp +0 -0
  171. package/docs/previews/form-fields-openinghours.webp +0 -0
  172. package/package.json +1 -1
@@ -1,3 +1,3 @@
1
- import { t as e } from "./public-CX7FN97X.js";
1
+ import { t as e } from "./public-CYdnlHqA.js";
2
2
  import { configurePdfReader as t } from "@nxgt/material-core/pdf-reader";
3
3
  export { e as PdfReader, t as configurePdfReader };
package/dist/print.js CHANGED
@@ -1,5 +1,5 @@
1
- import { r as e } from "./i18n-provider-CLq-1Qgc.js";
2
- import { t } from "./translate-material-CdpLjkcD.js";
1
+ import { r as e } from "./i18n-provider-A4mI4vc1.js";
2
+ import { t } from "./translate-material-xDh10aWZ.js";
3
3
  import { Children as n, createContext as r, isValidElement as i, useCallback as a, useContext as o, useEffect as s, useMemo as c, useState as l } from "react";
4
4
  import { jsx as u, jsxs as d } from "react/jsx-runtime";
5
5
  import { resolvePdfFileName as f } from "@nxgt/material-core/pdf-file-name";
@@ -6,18 +6,18 @@ import { c as i, i as a, l as o, n as s, o as c, s as l } from "./dist-lmHmz_bu.
6
6
  import { a as u, o as d } from "./tooltip-CkttDIab.js";
7
7
  import { i as f } from "./dist-C4wtXCjf.js";
8
8
  import { r as p, t as m } from "./in-dialog-Vwkyp-M5.js";
9
- import { C as h, D as g, E as _, O as v, S as y, T as b, _ as x, f as S, g as ee, k as te, r as ne, t as C, u as re, w } from "./dialog-C_U4twIJ.js";
10
- import { c as T, d as ie, f as E, i as ae, l as oe, n as se, o as D, t as ce, u as O } from "./dropdown-menu-DSgkmogX.js";
11
- import { S as le, a as k, d as A, g as ue, h as de, i as fe, m as pe, n as j, r as me, t as M, u as he, w as ge } from "./toolbar-items-D7R9YtYx.js";
12
- import { t as N } from "./use-material-translation-Da9Ponn5.js";
13
- import { t as _e } from "./button-CoAu_GuF.js";
9
+ import { C as h, D as g, E as _, O as v, S as y, T as b, _ as x, f as S, g as ee, k as te, r as ne, t as C, u as re, w } from "./dialog-Cdv9IXVo.js";
10
+ import { c as T, d as ie, f as E, i as ae, l as oe, n as se, o as D, t as ce, u as O } from "./dropdown-menu-CpSnRXd-.js";
11
+ import { S as le, a as k, d as A, g as ue, h as de, i as fe, m as pe, n as j, r as me, t as M, u as he, w as ge } from "./toolbar-items-B1W-uVHS.js";
12
+ import { t as N } from "./use-material-translation-BK2YYCY3.js";
13
+ import { t as _e } from "./button-EMWOFSDB.js";
14
14
  import { n as ve, t as ye } from "./icon-button-ifTpXt0A.js";
15
15
  import { t as be } from "./useEvent-2fKq-6w8.js";
16
16
  import { n as xe, t as Se } from "./toggle-group-BMJNcFAC.js";
17
17
  import { o as Ce } from "./escape-owner-C4W_sOAU.js";
18
18
  import { n as we } from "./use-slice-reducer-BGkeGtML.js";
19
19
  import { r as Te } from "./use-csp-nonce-ZKs9k-ov.js";
20
- import { n as Ee, t as De } from "./empty-state-CJZ0sVE8.js";
20
+ import { n as Ee, t as De } from "./empty-state-DMr94lsF.js";
21
21
  import { t as Oe } from "./client-only.utils-3nHNzCki.js";
22
22
  import { t as ke } from "./use-scroll-away-PQRFZkT2.js";
23
23
  import { ArrowLeft as Ae, BookOpenText as je, ChevronDown as Me, ChevronLeft as Ne, ChevronRight as Pe, ChevronUp as Fe, Download as Ie, Eraser as Le, FileText as Re, FileWarning as ze, FileX2 as Be, Highlighter as Ve, KeyRound as He, LayoutGrid as Ue, List as We, Loader2 as Ge, Maximize as Ke, MessageSquareText as qe, Minimize as Je, MoreVertical as Ye, MousePointer2 as Xe, MoveHorizontal as Ze, PanelLeft as Qe, Pen as $e, PencilLine as et, Printer as tt, RotateCw as nt, Search as rt, StickyNote as it, Type as at, Underline as ot, Undo2 as st, Volume2 as ct, X as lt, XIcon as ut, ZoomIn as dt, ZoomOut as ft } from "lucide-react";
@@ -1,7 +1,7 @@
1
1
  import { t as e } from "./tooltip-CkttDIab.js";
2
- import { c as t, n, t as r } from "./dropdown-menu-DSgkmogX.js";
3
- import { t as i } from "./use-material-translation-Da9Ponn5.js";
4
- import { a, i as o, n as s, o as c, t as l } from "./code-language-items-BNMM7YlZ.js";
2
+ import { c as t, n, t as r } from "./dropdown-menu-CpSnRXd-.js";
3
+ import { t as i } from "./use-material-translation-BK2YYCY3.js";
4
+ import { a, i as o, n as s, o as c, t as l } from "./code-language-items-v5Rnq425.js";
5
5
  import { i as u, n as d, r as f, s as p } from "./dist-C3GR7kJd.js";
6
6
  import { t as m } from "./code-block-spec-CGLKRhwD.js";
7
7
  import { Check as h, ChevronDown as g, Copy as _, Maximize2 as v, WrapText as y } from "lucide-react";
@@ -143,7 +143,7 @@ function M({ node: e, editor: t, updateAttributes: n, editable: r, wrap: a, onWr
143
143
  }
144
144
  //#endregion
145
145
  //#region lib/components/ui/widgets/editor/extensions/code/code-block-open.tsx
146
- var N = x(() => import("./code-editor-CEdEmolU.js").then((e) => e.n).then((e) => ({ default: e.CodeEditor })));
146
+ var N = x(() => import("./code-editor-BdiufnpC.js").then((e) => e.n).then((e) => ({ default: e.CodeEditor })));
147
147
  function P() {
148
148
  let { t: e } = i();
149
149
  return /* @__PURE__ */ T("div", {
@@ -1,6 +1,6 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
2
  import { t } from "./dist-DVRQkaTK.js";
3
- import { t as n } from "./use-material-translation-Da9Ponn5.js";
3
+ import { t as n } from "./use-material-translation-BK2YYCY3.js";
4
4
  import { t as r } from "./icon-button-ifTpXt0A.js";
5
5
  import { t as i } from "./compose-refs-DZ0iIVF-.js";
6
6
  import { GripVertical as a } from "lucide-react";
@@ -1,6 +1,6 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
2
  import { o as t } from "./tooltip-CkttDIab.js";
3
- import { t as n } from "./use-material-translation-Da9Ponn5.js";
3
+ import { t as n } from "./use-material-translation-BK2YYCY3.js";
4
4
  import { jsx as r } from "react/jsx-runtime";
5
5
  //#region lib/components/ui/feedback/spinner/spinner.tsx
6
6
  var i = t("transition-all duration-500", {
@@ -403,11 +403,21 @@ var t = {
403
403
  save: "Save",
404
404
  cancel: "Cancel",
405
405
  remove: "Delete",
406
- "add-option": "Add option"
406
+ "add-option": "Add option",
407
+ done: "Done",
408
+ "remove-row": "Remove {name}",
409
+ "edit-row": "Edit {name}",
410
+ reorder: "Reorder {name}"
407
411
  },
408
412
  labels: {
413
+ none: "No attributes",
409
414
  "new-attribute": "New attribute",
410
- attributes: "Attributes"
415
+ attributes: "Attributes",
416
+ default: "Default",
417
+ yes: "Yes",
418
+ no: "No",
419
+ hint: "Drag the handle, or press Space, then ↑ ↓, Space to drop, Esc to cancel",
420
+ untitled: "Untitled attribute"
411
421
  },
412
422
  messages: {
413
423
  "create-succeeded": "Attribute successfully created",
@@ -415,7 +425,8 @@ var t = {
415
425
  "delete-succeeded": "{count, plural, one {Attribute successfully deleted} other {# attributes successfully deleted}}",
416
426
  empty: "No attributes yet",
417
427
  "add-first": "Add an attribute to get started.",
418
- dialog: "Name, type, and optional defaults."
428
+ dialog: "Name, type, and optional defaults.",
429
+ sheet: "Edit this attribute."
419
430
  },
420
431
  types: {
421
432
  color: "Color",
@@ -473,6 +484,17 @@ var t = {
473
484
  label: "Unit",
474
485
  placeholder: "Enter unit (e.g., kg, cm)"
475
486
  }
487
+ },
488
+ errors: {
489
+ duplicate: "Another attribute already has this name.",
490
+ empty: "Enter a name.",
491
+ issues: "{count, plural, one {# issue to fix} other {# issues to fix}}"
492
+ },
493
+ announce: {
494
+ lift: "Picked up {name}, position {position} of {count}. Use the arrow keys to move it, Space to drop it, Escape to cancel.",
495
+ move: "{name} moved to position {position} of {count}.",
496
+ drop: "{name} dropped at position {position} of {count}.",
497
+ cancel: "Reorder cancelled. {name} is back at position {position} of {count}."
476
498
  }
477
499
  },
478
500
  table: {
@@ -532,7 +554,10 @@ var t = {
532
554
  fields: {
533
555
  type: "Type",
534
556
  value: "Value",
535
- label: "Label"
557
+ label: "Label",
558
+ "row-type": "{type} {n}: type",
559
+ "row-value": "{type} {n}: value",
560
+ "row-label": "{type} {n}: label"
536
561
  },
537
562
  types: {
538
563
  phone: "Phone",
@@ -556,21 +581,47 @@ var t = {
556
581
  remove: "Remove Contact",
557
582
  edit: "Edit contact",
558
583
  save: "Save",
559
- cancel: "Cancel"
584
+ cancel: "Cancel",
585
+ "make-primary": "Make primary",
586
+ "is-primary": "Primary for this type",
587
+ call: "Call",
588
+ "send-email": "Send an email",
589
+ "open-site": "Open site",
590
+ "copy-value": "Copy {value}",
591
+ done: "Done",
592
+ "remove-row": "Remove {type} {n}",
593
+ "add-type": "Add {type}"
560
594
  },
561
595
  messages: {
562
596
  "no-contacts": "No contacts added yet",
563
597
  "add-first": "Click the button below to add a contact",
564
- dialog: "Type, value, and an optional label."
598
+ dialog: "Type, value, and an optional label.",
599
+ sheet: "Edit this contact."
565
600
  },
566
- labels: { contacts: "Contacts" }
601
+ labels: {
602
+ none: "No contacts",
603
+ contacts: "Contacts",
604
+ primary: "Primary",
605
+ group: "{type}, {count, plural, one {# contact} other {# contacts}}"
606
+ },
607
+ errors: {
608
+ email: "Enter a valid email address.",
609
+ phone: "Enter 7 to 15 digits.",
610
+ website: "Start with https:// or http://.",
611
+ duplicate: "Already listed ({name}).",
612
+ empty: "Enter a value.",
613
+ issues: "{count, plural, one {# issue to fix} other {# issues to fix}}"
614
+ }
567
615
  },
568
616
  "opening-hours": {
569
617
  fields: {
570
618
  dayOfWeek: "Day of Week",
571
619
  openTime: "Opening Time",
572
620
  closeTime: "Closing Time",
573
- isClosed: "Closed"
621
+ isClosed: "Closed",
622
+ "range-open": "{day}, range {n}: opening time",
623
+ "range-close": "{day}, range {n}: closing time",
624
+ "day-open": "{day}: open"
574
625
  },
575
626
  days: {
576
627
  0: "Sunday",
@@ -601,16 +652,42 @@ var t = {
601
652
  "add-all": "Add All Days",
602
653
  edit: "Edit hours",
603
654
  save: "Save",
604
- cancel: "Cancel"
655
+ cancel: "Cancel",
656
+ "add-range": "Add hours",
657
+ "remove-range": "Remove range {n} of {day}",
658
+ "copy-to": "Copy to…",
659
+ copy: "Copy",
660
+ done: "Done"
605
661
  },
606
662
  labels: {
607
663
  "closed-all-day": "Closed all day",
608
- "open-hours": "Opening Hours"
664
+ "open-hours": "Opening Hours",
665
+ today: "Today",
666
+ open: "Open",
667
+ closed: "Closed",
668
+ "copy-weekdays": "Monday to Friday",
669
+ "copy-weekend": "Weekend",
670
+ "copy-all": "All days",
671
+ copied: "Copied to {days}",
672
+ "copy-days": "Copy {day} to"
609
673
  },
610
674
  messages: {
611
675
  "no-hours": "No opening hours configured",
612
- "add-first": "Click the button below to add opening hours",
676
+ "add-first": "Use the button above to add opening hours",
613
677
  dialog: "Day, opening time, and closing time."
678
+ },
679
+ status: {
680
+ "closes-at": "closes at {time}",
681
+ "opens-at": "opens at {time}",
682
+ "opens-tomorrow": "opens tomorrow at {time}",
683
+ "opens-day": "opens {day} at {time}",
684
+ unset: "Hours not set"
685
+ },
686
+ errors: {
687
+ close: "Closing time must be after opening time.",
688
+ overlap: "This range overlaps another one.",
689
+ missing: "Enter both times.",
690
+ issues: "{count, plural, one {# issue to fix} other {# issues to fix}}"
614
691
  }
615
692
  },
616
693
  "postal-address": {
@@ -3072,11 +3149,21 @@ var t = {
3072
3149
  save: "Enregistrer",
3073
3150
  cancel: "Annuler",
3074
3151
  remove: "Supprimer",
3075
- "add-option": "Ajouter une option"
3152
+ "add-option": "Ajouter une option",
3153
+ done: "Terminé",
3154
+ "remove-row": "Supprimer {name}",
3155
+ "edit-row": "Modifier {name}",
3156
+ reorder: "Réordonner {name}"
3076
3157
  },
3077
3158
  labels: {
3159
+ none: "Aucun attribut",
3078
3160
  "new-attribute": "Nouvel attribut",
3079
- attributes: "Attributs"
3161
+ attributes: "Attributs",
3162
+ default: "Défaut",
3163
+ yes: "Oui",
3164
+ no: "Non",
3165
+ hint: "Faites glisser la poignée, ou appuyez sur Espace, puis ↑ ↓, Espace pour déposer, Échap pour annuler",
3166
+ untitled: "Attribut sans titre"
3080
3167
  },
3081
3168
  messages: {
3082
3169
  "create-succeeded": "Attribut créé avec succès",
@@ -3084,7 +3171,8 @@ var t = {
3084
3171
  "delete-succeeded": "{count, plural, =0 {Aucun attribut supprimé.} one {Attribut supprimé avec succès} other {# attributs supprimés avec succès.}}",
3085
3172
  empty: "Aucun attribut",
3086
3173
  "add-first": "Ajoutez un attribut pour commencer.",
3087
- dialog: "Nom, type et valeurs par défaut optionnelles."
3174
+ dialog: "Nom, type et valeurs par défaut optionnelles.",
3175
+ sheet: "Modifier cet attribut."
3088
3176
  },
3089
3177
  types: {
3090
3178
  color: "Couleur",
@@ -3142,6 +3230,17 @@ var t = {
3142
3230
  label: "Unité",
3143
3231
  placeholder: "Saisir l’unité (ex : kg, cm)"
3144
3232
  }
3233
+ },
3234
+ errors: {
3235
+ duplicate: "Un autre attribut porte déjà ce nom.",
3236
+ empty: "Saisissez un nom.",
3237
+ issues: "{count, plural, one {# problème à corriger} other {# problèmes à corriger}}"
3238
+ },
3239
+ announce: {
3240
+ lift: "{name} saisi, position {position} sur {count}. Déplacez-le avec les flèches, Espace pour le déposer, Échap pour annuler.",
3241
+ move: "{name} déplacé à la position {position} sur {count}.",
3242
+ drop: "{name} déposé à la position {position} sur {count}.",
3243
+ cancel: "Réorganisation annulée. {name} est revenu à la position {position} sur {count}."
3145
3244
  }
3146
3245
  },
3147
3246
  table: {
@@ -3201,7 +3300,10 @@ var t = {
3201
3300
  fields: {
3202
3301
  type: "Type",
3203
3302
  value: "Valeur",
3204
- label: "Libellé"
3303
+ label: "Libellé",
3304
+ "row-type": "{type} {n} : type",
3305
+ "row-value": "{type} {n} : valeur",
3306
+ "row-label": "{type} {n} : libellé"
3205
3307
  },
3206
3308
  types: {
3207
3309
  phone: "Téléphone",
@@ -3225,21 +3327,47 @@ var t = {
3225
3327
  remove: "Supprimer le contact",
3226
3328
  edit: "Modifier le contact",
3227
3329
  save: "Enregistrer",
3228
- cancel: "Annuler"
3330
+ cancel: "Annuler",
3331
+ "make-primary": "Définir comme principal",
3332
+ "is-primary": "Principal pour ce type",
3333
+ call: "Appeler",
3334
+ "send-email": "Écrire un courriel",
3335
+ "open-site": "Ouvrir le site",
3336
+ "copy-value": "Copier {value}",
3337
+ done: "Terminé",
3338
+ "remove-row": "Retirer {type} {n}",
3339
+ "add-type": "Ajouter {type}"
3229
3340
  },
3230
3341
  messages: {
3231
3342
  "no-contacts": "Aucun contact ajouté",
3232
3343
  "add-first": "Cliquez sur le bouton ci-dessous pour ajouter un contact",
3233
- dialog: "Type, valeur et un libellé optionnel."
3344
+ dialog: "Type, valeur et un libellé optionnel.",
3345
+ sheet: "Modifiez ce contact."
3234
3346
  },
3235
- labels: { contacts: "Contacts" }
3347
+ labels: {
3348
+ none: "Aucun contact",
3349
+ contacts: "Contacts",
3350
+ primary: "Principal",
3351
+ group: "{type}, {count, plural, one {# contact} other {# contacts}}"
3352
+ },
3353
+ errors: {
3354
+ email: "Saisissez une adresse courriel valide.",
3355
+ phone: "Saisissez de 7 à 15 chiffres.",
3356
+ website: "Commencez par https:// ou http://.",
3357
+ duplicate: "Déjà présent ({name}).",
3358
+ empty: "Saisissez une valeur.",
3359
+ issues: "{count, plural, one {# point à corriger} other {# points à corriger}}"
3360
+ }
3236
3361
  },
3237
3362
  "opening-hours": {
3238
3363
  fields: {
3239
3364
  dayOfWeek: "Jour de la semaine",
3240
3365
  openTime: "Heure d''ouverture",
3241
3366
  closeTime: "Heure de fermeture",
3242
- isClosed: "Fermé"
3367
+ isClosed: "Fermé",
3368
+ "range-open": "{day}, plage {n} : heure d''ouverture",
3369
+ "range-close": "{day}, plage {n} : heure de fermeture",
3370
+ "day-open": "{day} : ouvert"
3243
3371
  },
3244
3372
  days: {
3245
3373
  0: "Dimanche",
@@ -3270,16 +3398,42 @@ var t = {
3270
3398
  "add-all": "Ajouter tous les jours",
3271
3399
  edit: "Modifier les horaires",
3272
3400
  save: "Enregistrer",
3273
- cancel: "Annuler"
3401
+ cancel: "Annuler",
3402
+ "add-range": "Ajouter une plage",
3403
+ "remove-range": "Retirer la plage {n} de {day}",
3404
+ "copy-to": "Copier vers…",
3405
+ copy: "Copier",
3406
+ done: "Terminé"
3274
3407
  },
3275
3408
  labels: {
3276
3409
  "closed-all-day": "Fermé toute la journée",
3277
- "open-hours": "Horaires d''ouverture"
3410
+ "open-hours": "Horaires d''ouverture",
3411
+ today: "Aujourd''hui",
3412
+ open: "Ouvert",
3413
+ closed: "Fermé",
3414
+ "copy-weekdays": "Du lundi au vendredi",
3415
+ "copy-weekend": "Week-end",
3416
+ "copy-all": "Tous les jours",
3417
+ copied: "Copié vers {days}",
3418
+ "copy-days": "Copier {day} vers"
3278
3419
  },
3279
3420
  messages: {
3280
3421
  "no-hours": "Aucun horaire configuré",
3281
- "add-first": "Cliquez sur le bouton ci-dessous pour ajouter des horaires",
3422
+ "add-first": "Utilisez le bouton ci-dessus pour ajouter des horaires",
3282
3423
  dialog: "Jour, heure d'ouverture et de fermeture."
3424
+ },
3425
+ status: {
3426
+ "closes-at": "ferme à {time}",
3427
+ "opens-at": "ouvre à {time}",
3428
+ "opens-tomorrow": "ouvre demain à {time}",
3429
+ "opens-day": "ouvre {day} à {time}",
3430
+ unset: "Horaires non renseignés"
3431
+ },
3432
+ errors: {
3433
+ close: "L''heure de fermeture doit suivre l''ouverture.",
3434
+ overlap: "Cette plage chevauche une autre plage.",
3435
+ missing: "Renseignez les deux heures.",
3436
+ issues: "{count, plural, one {# erreur à corriger} other {# erreurs à corriger}}"
3283
3437
  }
3284
3438
  },
3285
3439
  "postal-address": {
@@ -1,10 +1,10 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
2
  import { a as t, i as n, n as r, o as i, r as a, t as o } from "./bubble-input-B7BVd9fX.js";
3
- import { t as s } from "./use-material-translation-Da9Ponn5.js";
3
+ import { t as s } from "./use-material-translation-BK2YYCY3.js";
4
4
  import { a as c, r as l } from "./icon-sprites-CaYXzOL4.js";
5
5
  import { t as u } from "./use-theme-DMcyJ52N.js";
6
6
  import { a as d, r as f } from "./theme-context-Cofk6vgs.js";
7
- import { t as p } from "./theme-toggle-Drab-hke.js";
7
+ import { t as p } from "./theme-toggle--Zcf5AM8.js";
8
8
  import { n as m, t as h } from "./nxgt-theme-ZS945iMP.js";
9
9
  import { Check as g } from "lucide-react";
10
10
  import { useContext as _ } from "react";
@@ -1,4 +1,4 @@
1
- import { t as e } from "./use-material-translation-Da9Ponn5.js";
1
+ import { t as e } from "./use-material-translation-BK2YYCY3.js";
2
2
  import { i as t } from "./theme-store-CSl51uNH.js";
3
3
  import { n, t as r } from "./use-theme-DMcyJ52N.js";
4
4
  import { r as i } from "./theme-context-Cofk6vgs.js";
@@ -4,9 +4,9 @@ import { a as i, c as a, i as o, l as s, r as c, s as l } from "./dist-lmHmz_bu.
4
4
  import { b as u, c as d, d as f, f as p, l as m, t as h, u as g, x as _ } from "./tooltip-CkttDIab.js";
5
5
  import { i as v, n as y, r as b, t as x } from "./dist-C4wtXCjf.js";
6
6
  import { a as S, c as C, l as w, o as T, r as ee, s as te, t as E } from "./in-dialog-Vwkyp-M5.js";
7
- import { A as ne, M as re, N as ie, b as ae, d as oe, f as se, i as ce, j as le, l as ue, n as de, o as fe, r as pe, t as me, u as he, y as ge } from "./dropdown-menu-DSgkmogX.js";
7
+ import { A as ne, M as re, N as ie, b as ae, d as oe, f as se, i as ce, j as le, l as ue, n as de, o as fe, r as pe, t as me, u as he, y as ge } from "./dropdown-menu-CpSnRXd-.js";
8
8
  import { a as _e, n as ve, r as ye, t as be } from "./dist-B7RjY7SL.js";
9
- import { t as xe } from "./use-material-translation-Da9Ponn5.js";
9
+ import { t as xe } from "./use-material-translation-BK2YYCY3.js";
10
10
  import { t as Se } from "./warn-once-C_e47JM8.js";
11
11
  import { o as Ce } from "./escape-owner-C4W_sOAU.js";
12
12
  import { ChevronLeft as we, ChevronRightIcon as Te, MoreVertical as Ee } from "lucide-react";
@@ -1,5 +1,5 @@
1
- import "./stored-language-D73ujVW4.js";
2
- import { a as e, r as t } from "./translator-BE-yEb0p.js";
1
+ import "./stored-language-CfQGHLq9.js";
2
+ import { a as e, r as t } from "./translator-BbOZntEF.js";
3
3
  //#region lib/i18n/translate-material.ts
4
4
  function n(n, r, i, a) {
5
5
  if (n) for (let e of /* @__PURE__ */ new Set([n, n.split("-")[0]])) {
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./is-production-GLw59WU8.js";
2
- import { a as t, i as n, r, t as i } from "./stored-language-D73ujVW4.js";
2
+ import { a as t, i as n, r, t as i } from "./stored-language-CfQGHLq9.js";
3
3
  import { t as a } from "./get-CTzJAwfc.js";
4
4
  //#region ../../node_modules/@formatjs/fast-memoize/index.js
5
5
  function o(e, t) {
@@ -7,21 +7,21 @@ import { a as o, c as s, i as c, l, n as u, o as d, r as f, s as p, t as m } fro
7
7
  import { _ as h, a as g, g as _, h as v, m as y, o as b, p as x, t as S, v as C, y as w } from "./tooltip-CkttDIab.js";
8
8
  import { a as T, i as E, n as D, r as O, t as k } from "./dist-C4wtXCjf.js";
9
9
  import { i as A, n as ee, t as j } from "./in-dialog-Vwkyp-M5.js";
10
- import { A as M, C as N, D as te, E as ne, O as P, S as re, T as ie, _ as F, b as ae, f as oe, g as se, k as I, l as ce, m as le, n as ue, o as de, r as fe, s as pe, t as me, u as he, v as ge, w as _e, x as ve, y as ye } from "./dialog-C_U4twIJ.js";
10
+ import { A as M, C as N, D as te, E as ne, O as P, S as re, T as ie, _ as F, b as ae, f as oe, g as se, k as I, l as ce, m as le, n as ue, o as de, r as fe, s as pe, t as me, u as he, v as ge, w as _e, x as ve, y as ye } from "./dialog-Cdv9IXVo.js";
11
11
  import { A as be, C as xe, D as Se, E as Ce, O as we, S as Te, T as Ee, _ as De, a as Oe, b as ke, d as Ae, f as je, g as Me, h as Ne, i as Pe, k as Fe, l as Ie, m as Le, n as Re, o as ze, p as Be, r as Ve, s as He, t as Ue, u as We, v as Ge, w as Ke, x as qe, y as Je } from "./floating-ui.dom-KkZSW8_E.js";
12
- import { D as Ye, E as Xe, N as Ze, O as Qe, c as $e, d as et, f as tt, i as nt, k as rt, m as it, n as at, o as ot, p as st, t as ct, u as lt } from "./dropdown-menu-DSgkmogX.js";
12
+ import { D as Ye, E as Xe, N as Ze, O as Qe, c as $e, d as et, f as tt, i as nt, k as rt, m as it, n as at, o as ot, p as st, t as ct, u as lt } from "./dropdown-menu-CpSnRXd-.js";
13
13
  import { a as ut, i as dt, n as ft } from "./field-blur-context-Cft9s7Hg.js";
14
- import { C as pt, S as mt, a as ht, c as gt, d as _t, l as vt, n as yt, o as bt, s as xt, u as St } from "./toolbar-items-D7R9YtYx.js";
14
+ import { C as pt, S as mt, a as ht, c as gt, d as _t, l as vt, n as yt, o as bt, s as xt, u as St } from "./toolbar-items-B1W-uVHS.js";
15
15
  import { a as Ct, i as wt, n as Tt, o as Et, t as Dt } from "./bubble-input-B7BVd9fX.js";
16
16
  import { i as Ot } from "./dist-B7RjY7SL.js";
17
- import "./stored-language-D73ujVW4.js";
18
- import { a as kt } from "./translator-BE-yEb0p.js";
17
+ import "./stored-language-CfQGHLq9.js";
18
+ import { a as kt } from "./translator-BbOZntEF.js";
19
19
  import { h as At } from "./get-CTzJAwfc.js";
20
20
  import { t as jt } from "./isEmpty-F_g3jLf8.js";
21
- import { t as L } from "./use-material-translation-Da9Ponn5.js";
22
- import { t as Mt } from "./spinner-wKfFAVU9.js";
21
+ import { t as L } from "./use-material-translation-BK2YYCY3.js";
22
+ import { t as Mt } from "./spinner-CKlDba5I.js";
23
23
  import { a as Nt } from "./button-tones-BwuVvAmd.js";
24
- import { a as Pt, i as Ft, n as It, r as Lt, t as Rt } from "./button-CoAu_GuF.js";
24
+ import { a as Pt, i as Ft, n as It, r as Lt, t as Rt } from "./button-EMWOFSDB.js";
25
25
  import { t as R } from "./icon-button-ifTpXt0A.js";
26
26
  import { a as zt, r as Bt } from "./icon-sprites-CaYXzOL4.js";
27
27
  import { t as Vt } from "./use-ssr-media-query-C6M5m8sf.js";
@@ -35,10 +35,10 @@ import { a as tn, i as nn, o as rn } from "./escape-owner-C4W_sOAU.js";
35
35
  import { n as an } from "./use-slice-reducer-BGkeGtML.js";
36
36
  import { t as on } from "./browser-only-DQ94lWF8.js";
37
37
  import { t as sn } from "./compose-refs-DZ0iIVF-.js";
38
- import { n as cn, r as ln, t as un } from "./chip-Ch21Qbnj.js";
39
- import { n as dn, t as fn } from "./icon-badge-Dssl4rfn.js";
38
+ import { n as cn, r as ln, t as un } from "./chip-B6m3yagf.js";
39
+ import { n as dn, t as fn } from "./icon-badge-BFScQnp9.js";
40
40
  import { r as pn } from "./use-csp-nonce-ZKs9k-ov.js";
41
- import { t as mn } from "./empty-state-CJZ0sVE8.js";
41
+ import { t as mn } from "./empty-state-DMr94lsF.js";
42
42
  import { t as hn } from "./skeleton-DSdtr2qc.js";
43
43
  import { H as gn, V as _n, X as vn, bt as yn, it as bn, lt as xn, n as Sn, t as Cn, xt as wn, yt as Tn } from "./dist-moutbfbd.js";
44
44
  import { t as En } from "./markdown-Dw_uH7j7.js";
@@ -10782,7 +10782,7 @@ var CS = (e = {}) => Dn({
10782
10782
  let [{ default: t }, { lowlight: n }, { richCodeBlock: r }] = await Promise.all([
10783
10783
  import("./dist-CRMFGjng.js"),
10784
10784
  import("./lowlight-OtcjU2Sa.js"),
10785
- import("./rich-code-block-cc1NZtbD.js")
10785
+ import("./rich-code-block-Bwhfhu7J.js")
10786
10786
  ]);
10787
10787
  return [r(t, {
10788
10788
  lowlight: n,
@@ -1,4 +1,4 @@
1
- import { r as e } from "./i18n-provider-CLq-1Qgc.js";
1
+ import { r as e } from "./i18n-provider-A4mI4vc1.js";
2
2
  import { _ as t, g as n, h as r, n as i, v as a, y as o } from "./number.utils-BG_eEt5g.js";
3
3
  import { useCallback as s, useEffect as c, useMemo as l, useRef as u } from "react";
4
4
  //#region ../../node_modules/date-fns/locale/fr/_lib/formatDistance.js
@@ -1,5 +1,5 @@
1
- import { r as e } from "./i18n-provider-CLq-1Qgc.js";
2
- import { t } from "./translate-material-CdpLjkcD.js";
1
+ import { r as e } from "./i18n-provider-A4mI4vc1.js";
2
+ import { t } from "./translate-material-xDh10aWZ.js";
3
3
  import { useCallback as n } from "react";
4
4
  //#region lib/i18n/use-material-translation.ts
5
5
  function r() {
@@ -868,9 +868,16 @@ export default function Students() {
868
868
  archived show no "Restore". `onClick(ids, selection, rows)` receives only
869
869
  those ids and rows. An action without `appliesTo` applies to the whole
870
870
  selection: it shows the selection's size and gets every id. **Across
871
- pages:** `appliesTo` sees the loaded page's rows only, so a row selected on
872
- another page is neither counted nor passed by an action that has one; an
873
- action without it still gets every selected id.
871
+ pages:** `ServerTable` keeps the row last seen for each selected id, taken
872
+ when the row was ticked and refreshed each time it is on screen again (so
873
+ after a mutation the bar sees its current state). `appliesTo`, the counts
874
+ and `onClick(ids, selection, rows)` use these rows for every selected id,
875
+ whatever page is shown: 3 archived rows ticked on page 1 and 2 live ones on
876
+ page 2 read "Restore (3)" and "Archive (2)" on either page. An id selected
877
+ with no row ever seen does not apply to an action that has `appliesTo`
878
+ (an action without it still gets every selected id). A row's snapshot is
879
+ dropped when it is deselected, when the selection is cleared and when the
880
+ query changes.
874
881
  ```tsx
875
882
  <ServerTable<Item>
876
883
  {...props}
@@ -586,6 +586,7 @@ export function OpensAt() {
586
586
  | --- | --- | --- | --- |
587
587
  | `value` | `Date` | — | only the hours and minutes are shown |
588
588
  | `onValueChange` | `(value?: Date) => void` | — | on every hour, minute or AM / PM change |
589
+ | `size` | `'default' \| 'sm'` | `'default'` | `'sm'` is the compact 36px box (the field radius is unchanged) |
589
590
  | `variant`, `hourCycle`, `minuteStep` | | `'tiles'`, the language's, `5` | passed to the `TimePicker` ([below](#timepicker)); `hourCycle` sets the segments' clock too |
590
591
  | `entry` | `'typed'` | — | deprecated, no effect: the time is always typed in segments, with a button that opens the picker (`'button'`, the 2.x trigger, was removed in 3.0) |
591
592
  | `clearable` | `boolean` | `!required` | a ✕ (named "Clear") that empties the typed field; shown only while it holds a time and is not `disabled` |
@@ -634,7 +635,14 @@ phone) is named by the label, and closing it hands focus back to "Open time
634
635
  picker". "Open time picker" and "Clear" are described by the label, as on
635
636
  `DateField`.
636
637
 
637
- **Emits:** `Date | undefined`. `TimeFormField` stores that `Date`, or an
638
+ `size="sm"` is the compact box (36px, the same field radius, no clear
639
+ button needed): for a row of times such as opening hours. `TimeStringField`
640
+ is the same field with an `'HH:mm'` string for its `value` and
641
+ `onValueChange` (`undefined` once emptied), for a stored time of day; it takes
642
+ every `TimeField` prop. A separate component keeps `TimeField`'s `Date` types
643
+ unchanged.
644
+
645
+ **Emits:** `Date | undefined` (`TimeStringField`: `'HH:mm' | undefined`). `TimeFormField` stores that `Date`, or an
638
646
  `'HH:mm'` string with `asString`; `undefined`, `null` and `''` show the empty
639
647
  state.
640
648
  **Form wrapper:** `TimeFormField` — `control` and `name` (plus `asString`), see