@box/metadata-template-browser 1.19.6 → 1.20.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 (52) hide show
  1. package/dist/chunks/browser-row.js +8 -8
  2. package/dist/chunks/metadata-template-browser-container.js +36 -25
  3. package/dist/chunks/metadata-template-browser-controller.js +6 -6
  4. package/dist/esm/lib/components/browse-list/browse-list.js +51 -46
  5. package/dist/esm/lib/components/browse-list/messages.js +4 -0
  6. package/dist/esm/lib/components/messages.js +4 -0
  7. package/dist/esm/lib/contexts/contexts.js +10 -5
  8. package/dist/esm/lib/contexts/provider.js +35 -33
  9. package/dist/esm/lib/contexts/reducer.js +3 -0
  10. package/dist/esm/lib/contexts/use-template-browser-actions.js +7 -3
  11. package/dist/esm/lib/metadata-template-browser.js +2 -1
  12. package/dist/i18n/bn-IN.js +2 -0
  13. package/dist/i18n/da-DK.js +2 -0
  14. package/dist/i18n/de-DE.js +2 -0
  15. package/dist/i18n/en-AU.js +2 -0
  16. package/dist/i18n/en-CA.js +2 -0
  17. package/dist/i18n/en-GB.js +2 -0
  18. package/dist/i18n/en-US.js +2 -0
  19. package/dist/i18n/en-US.properties +4 -0
  20. package/dist/i18n/en-x-pseudo.js +2 -0
  21. package/dist/i18n/es-419.js +2 -0
  22. package/dist/i18n/es-ES.js +2 -0
  23. package/dist/i18n/fi-FI.js +2 -0
  24. package/dist/i18n/fr-CA.js +2 -0
  25. package/dist/i18n/fr-FR.js +2 -0
  26. package/dist/i18n/hi-IN.js +2 -0
  27. package/dist/i18n/it-IT.js +2 -0
  28. package/dist/i18n/ja-JP.js +2 -0
  29. package/dist/i18n/json/src/lib/components/browse-list/messages.json +1 -1
  30. package/dist/i18n/json/src/lib/components/messages.json +1 -1
  31. package/dist/i18n/ko-KR.js +2 -0
  32. package/dist/i18n/nb-NO.js +2 -0
  33. package/dist/i18n/nl-NL.js +2 -0
  34. package/dist/i18n/pl-PL.js +2 -0
  35. package/dist/i18n/pt-BR.js +2 -0
  36. package/dist/i18n/ru-RU.js +2 -0
  37. package/dist/i18n/sv-SE.js +2 -0
  38. package/dist/i18n/tr-TR.js +2 -0
  39. package/dist/i18n/zh-CN.js +2 -0
  40. package/dist/i18n/zh-TW.js +2 -0
  41. package/dist/styles/browser-row.css +1 -1
  42. package/dist/styles/metadata-template-browser-container.css +1 -1
  43. package/dist/types/lib/components/browse-list/messages.d.ts +5 -0
  44. package/dist/types/lib/components/messages.d.ts +5 -0
  45. package/dist/types/lib/components/metadata-template-browser-container.d.ts +6 -1
  46. package/dist/types/lib/contexts/contexts.d.ts +1 -1
  47. package/dist/types/lib/contexts/provider.d.ts +7 -1
  48. package/dist/types/lib/contexts/reducer.d.ts +1 -0
  49. package/dist/types/lib/metadata-template-browser.d.ts +8 -1
  50. package/dist/types/lib/stories/shared/generate-namespaces.d.ts +1 -0
  51. package/dist/types/lib/types.d.ts +10 -0
  52. package/package.json +1 -1
@@ -4,14 +4,14 @@ import n from "clsx";
4
4
  import { jsx as r, jsxs as i } from "react/jsx-runtime";
5
5
  import { GridListItem as a } from "react-aria-components";
6
6
  import '../styles/browser-row.css';var o = {
7
- row: "_row_ybl3t_2",
8
- trailingSlotHoverOnly: "_trailingSlotHoverOnly_ybl3t_15",
9
- item: "_item_ybl3t_19",
10
- disabled: "_disabled_ybl3t_40",
11
- leadingIcon: "_leadingIcon_ybl3t_59",
12
- content: "_content_ybl3t_66",
13
- trailingSlot: "_trailingSlot_ybl3t_15",
14
- subtitle: "_subtitle_ybl3t_77"
7
+ row: "_row_x9hxe_2",
8
+ trailingSlotHoverOnly: "_trailingSlotHoverOnly_x9hxe_15",
9
+ item: "_item_x9hxe_19",
10
+ disabled: "_disabled_x9hxe_40",
11
+ leadingIcon: "_leadingIcon_x9hxe_59",
12
+ content: "_content_x9hxe_66",
13
+ trailingSlot: "_trailingSlot_x9hxe_15",
14
+ subtitle: "_subtitle_x9hxe_77"
15
15
  };
16
16
  function s({ id: s, leadingIcon: c, title: l, subtitle: u, trailingSlot: d, isTrailingSlotHoverOnly: f }) {
17
17
  let { isDisabled: p } = e(), m = n(o.trailingSlot, { [o.trailingSlotHoverOnly]: f });
@@ -1,31 +1,42 @@
1
- import { useBrowserActions as e, useConsumerState as t } from "../esm/lib/contexts/hooks.js";
2
- import { t as n } from "./breadcrumb-navigation.js";
3
- import { messages as r } from "../esm/lib/components/messages.js";
4
- import { useIsInitialBrowseLoading as i } from "../esm/lib/hooks/use-is-initial-browse-loading.js";
5
- import { t as a } from "./metadata-template-browser-list-box.js";
6
- import { SearchInput as o } from "@box/blueprint-web";
7
- import { useIntl as s } from "react-intl";
8
- import { jsx as c, jsxs as l } from "react/jsx-runtime";
9
- import '../styles/metadata-template-browser-container.css';var u = {
10
- container: "_container_qa97y_1",
11
- searchInput: "_searchInput_qa97y_9"
1
+ import { useBrowseState as e, useBrowserActions as t, useConsumerState as n, useNavigationState as r, useSearchState as i } from "../esm/lib/contexts/hooks.js";
2
+ import { t as a } from "./breadcrumb-navigation.js";
3
+ import { messages as o } from "../esm/lib/components/messages.js";
4
+ import { useIsInitialBrowseLoading as s } from "../esm/lib/hooks/use-is-initial-browse-loading.js";
5
+ import { t as c } from "./metadata-template-browser-list-box.js";
6
+ import { Button as l, SearchInput as u } from "@box/blueprint-web";
7
+ import { useIntl as d } from "react-intl";
8
+ import { jsx as f, jsxs as p } from "react/jsx-runtime";
9
+ import { Plus as m } from "@box/blueprint-web-assets/icons/Fill";
10
+ import '../styles/metadata-template-browser-container.css';var h = {
11
+ container: "_container_1dqk1_1",
12
+ searchInput: "_searchInput_1dqk1_9",
13
+ createTemplateButton: "_createTemplateButton_1dqk1_13"
12
14
  };
13
- function d() {
14
- let { formatMessage: d } = s(), { isDisabled: f } = t(), { setSearchValue: p } = e(), m = i();
15
- return /* @__PURE__ */ l("div", {
16
- className: u.container,
15
+ function g() {
16
+ let { formatMessage: g } = d(), { isDisabled: _ } = n(), { setSearchValue: v, createTemplate: y } = t(), { namespaceFQN: b, canCreateInCurrentNamespace: x } = r(), { searchValue: S } = i(), { isFetching: C, namespaces: w, templates: T, isNamespacesExhausted: E } = e(), D = s(), O = !C && E && w.length === 0 && T.length === 0, k = x && !D && !C && !O && S.length === 0;
17
+ return /* @__PURE__ */ p("div", {
18
+ className: h.container,
17
19
  children: [
18
- /* @__PURE__ */ c(o, {
19
- className: u.searchInput,
20
- disabled: f || m,
21
- onChange: p,
22
- placeholder: d(r.searchInputPlaceholder),
23
- searchInputAriaLabel: d(r.searchInputAriaLabel),
24
- searchInputClearAriaLabel: d(r.searchInputClearAriaLabel)
20
+ /* @__PURE__ */ f(u, {
21
+ className: h.searchInput,
22
+ disabled: _ || D,
23
+ onChange: v,
24
+ placeholder: g(o.searchInputPlaceholder),
25
+ searchInputAriaLabel: g(o.searchInputAriaLabel),
26
+ searchInputClearAriaLabel: g(o.searchInputClearAriaLabel)
25
27
  }),
26
- !m && /* @__PURE__ */ c(n, {}),
27
- /* @__PURE__ */ c(a, {})
28
+ !D && /* @__PURE__ */ f(a, {}),
29
+ k && /* @__PURE__ */ f(l, {
30
+ className: h.createTemplateButton,
31
+ disabled: _,
32
+ startIcon: m,
33
+ onClick: () => y(b),
34
+ variant: "tertiary",
35
+ size: "large",
36
+ children: g(o.createTemplateButtonLabel)
37
+ }),
38
+ /* @__PURE__ */ f(c, {})
28
39
  ]
29
40
  });
30
41
  }
31
- export { d as t };
42
+ export { g as t };
@@ -9,19 +9,19 @@ import { jsx as f, jsxs as p } from "react/jsx-runtime";
9
9
  import { NoTemplates as m } from "@box/blueprint-web-assets/illustrations/Medium";
10
10
  import '../styles/metadata-template-browser-controller.css';var h = { container: "_container_14phx_1" };
11
11
  function g() {
12
- let { isLoading: g } = n(), { formatMessage: _ } = l(), { initialLoad: v, retry: y } = t(), { path: b } = r(), { isFetching: x, initialLoadError: S, namespaces: C, templates: w } = e(), T = d(!1);
12
+ let { isLoading: g } = n(), { formatMessage: _ } = l(), { initialLoad: v, retry: y } = t(), { path: b, canCreateInCurrentNamespace: x } = r(), { isFetching: S, initialLoadError: C, namespaces: w, templates: T } = e(), E = d(!1);
13
13
  u(() => {
14
- !g && !T.current && (T.current = !0, v());
14
+ !g && !E.current && (E.current = !0, v());
15
15
  }, [g, v]);
16
- let E = C.length > 0 || w.length > 0, D = S !== null, O = b.length === 0, k = !x && !g && !E && !D && O, A = !D && !k;
16
+ let D = w.length > 0 || T.length > 0, O = C !== null, k = b.length === 0, A = !S && !g && !D && !O && k && !x, j = !O && !A;
17
17
  return /* @__PURE__ */ p("div", {
18
18
  className: h.container,
19
19
  children: [
20
- D && /* @__PURE__ */ f(i, {
20
+ O && /* @__PURE__ */ f(i, {
21
21
  body: _(a.initialLoadErrorBody),
22
22
  onRetry: y
23
23
  }),
24
- k && /* @__PURE__ */ f(s, {
24
+ A && /* @__PURE__ */ f(s, {
25
25
  body: /* @__PURE__ */ f(c, {
26
26
  as: "p",
27
27
  children: _(a.initialEmptyStateBody)
@@ -29,7 +29,7 @@ function g() {
29
29
  illustration: m,
30
30
  size: "small"
31
31
  }),
32
- A && /* @__PURE__ */ f(o, {})
32
+ j && /* @__PURE__ */ f(o, {})
33
33
  ]
34
34
  });
35
35
  }
@@ -1,58 +1,63 @@
1
- import { useBrowseState as e, useBrowserActions as t } from "../../contexts/hooks.js";
2
- import { t as n } from "../../../../chunks/types.js";
3
- import { ErrorState as r } from "../error-state/error-state.js";
4
- import { t as i } from "../../../../chunks/loader-skeleton.js";
5
- import { NamespaceRow as a } from "../namespace-row/namespace-row.js";
6
- import { TemplateRow as o } from "../template-row/template-row.js";
7
- import { t as s } from "../../../../chunks/virtualized-grid-list.js";
8
- import { messages as c } from "./messages.js";
9
- import { EmptyState as l, Text as u } from "@box/blueprint-web";
10
- import { useIntl as d } from "react-intl";
11
- import { useCallback as f } from "react";
12
- import { jsx as p } from "react/jsx-runtime";
13
- import { NoTemplates as m } from "@box/blueprint-web-assets/illustrations/Medium";
14
- var h = /* @__PURE__ */ function(e) {
1
+ import { useBrowseState as e, useBrowserActions as t, useConsumerState as n, useNavigationState as r } from "../../contexts/hooks.js";
2
+ import { t as i } from "../../../../chunks/types.js";
3
+ import { ErrorState as a } from "../error-state/error-state.js";
4
+ import { t as o } from "../../../../chunks/loader-skeleton.js";
5
+ import { NamespaceRow as s } from "../namespace-row/namespace-row.js";
6
+ import { TemplateRow as c } from "../template-row/template-row.js";
7
+ import { t as l } from "../../../../chunks/virtualized-grid-list.js";
8
+ import { messages as u } from "./messages.js";
9
+ import { EmptyState as d, Text as f } from "@box/blueprint-web";
10
+ import { useIntl as p } from "react-intl";
11
+ import { useCallback as m } from "react";
12
+ import { jsx as h } from "react/jsx-runtime";
13
+ import { NoTemplates as g } from "@box/blueprint-web-assets/illustrations/Medium";
14
+ var _ = /* @__PURE__ */ function(e) {
15
15
  return e.Namespace = "namespace", e.Template = "template", e;
16
- }(h || {});
17
- function g({ onAction: g, selectedKeys: _ }) {
18
- let { formatMessage: v } = d(), { namespaces: y, templates: b, isNamespacesExhausted: x, namespaceNextMarker: S, templateNextMarker: C, isFetching: w, isFetchingMore: T, browseError: E, loadMoreError: D } = e(), { loadMore: O, retry: k, editTemplate: A } = t(), j = S !== void 0 || x && C !== void 0, M = f((e) => e.kind === h.Namespace ? /* @__PURE__ */ p(a, { namespace: e.namespace }) : /* @__PURE__ */ p(o, {
19
- onEdit: A,
16
+ }(_ || {});
17
+ function v({ onAction: v, selectedKeys: y }) {
18
+ let { formatMessage: b } = p(), { namespaces: x, templates: S, isNamespacesExhausted: C, namespaceNextMarker: w, templateNextMarker: T, isFetching: E, isFetchingMore: D, browseError: O, loadMoreError: k } = e(), { loadMore: A, retry: j, editTemplate: M, createTemplate: N } = t(), { namespaceFQN: P, canCreateInCurrentNamespace: F } = r(), { isDisabled: I } = n(), L = w !== void 0 || C && T !== void 0, R = m((e) => e.kind === _.Namespace ? /* @__PURE__ */ h(s, { namespace: e.namespace }) : /* @__PURE__ */ h(c, {
19
+ onEdit: M,
20
20
  template: e.template,
21
- variant: n.Browse
22
- }), [A]);
23
- if (w) return /* @__PURE__ */ p(i, {});
24
- if (E !== null) return /* @__PURE__ */ p(r, {
25
- body: v(c.browseErrorBody),
26
- onRetry: k
21
+ variant: i.Browse
22
+ }), [M]);
23
+ if (E) return /* @__PURE__ */ h(o, {});
24
+ if (O !== null) return /* @__PURE__ */ h(a, {
25
+ body: b(u.browseErrorBody),
26
+ onRetry: j
27
27
  });
28
- let N = x ? b : [], P = [...y.map((e) => ({
28
+ let z = C ? S : [], B = [...x.map((e) => ({
29
29
  id: e.id,
30
- kind: h.Namespace,
30
+ kind: _.Namespace,
31
31
  namespace: e
32
- })), ...N.map((e) => ({
32
+ })), ...z.map((e) => ({
33
33
  id: e.id,
34
- kind: h.Template,
34
+ kind: _.Template,
35
35
  template: e
36
36
  }))];
37
- return P.length === 0 ? /* @__PURE__ */ p(l, {
38
- body: /* @__PURE__ */ p(u, {
37
+ return B.length === 0 ? /* @__PURE__ */ h(d, {
38
+ body: /* @__PURE__ */ h(f, {
39
39
  as: "p",
40
- children: v(c.emptyStateBody)
40
+ children: b(u.emptyStateBody)
41
41
  }),
42
- illustration: m,
43
- size: "small"
44
- }) : /* @__PURE__ */ p(s, {
45
- ariaLabel: v(c.listAriaLabel),
46
- isFetchingMore: T,
47
- items: P,
48
- listType: n.Browse,
49
- loadMoreError: D,
50
- onAction: g,
51
- hasMoreItems: j,
52
- onLoadMore: O,
53
- onRetry: O,
54
- selectedKeys: _,
55
- children: M
42
+ illustration: g,
43
+ size: "small",
44
+ children: F && /* @__PURE__ */ h(d.PrimaryAction, {
45
+ disabled: I,
46
+ onClick: () => N(P),
47
+ children: b(u.createFirstTemplateButtonLabel)
48
+ })
49
+ }) : /* @__PURE__ */ h(l, {
50
+ ariaLabel: b(u.listAriaLabel),
51
+ isFetchingMore: D,
52
+ items: B,
53
+ listType: i.Browse,
54
+ loadMoreError: k,
55
+ onAction: v,
56
+ hasMoreItems: L,
57
+ onLoadMore: A,
58
+ onRetry: A,
59
+ selectedKeys: y,
60
+ children: R
56
61
  });
57
62
  }
58
- export { g as BrowseList };
63
+ export { v as BrowseList };
@@ -11,6 +11,10 @@ var t = e({
11
11
  emptyStateBody: {
12
12
  id: "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody",
13
13
  defaultMessage: "There are no templates or namespaces in this folder."
14
+ },
15
+ createFirstTemplateButtonLabel: {
16
+ id: "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel",
17
+ defaultMessage: "Create first template"
14
18
  }
15
19
  });
16
20
  export { t as messages };
@@ -23,6 +23,10 @@ var t = e({
23
23
  initialLoadErrorBody: {
24
24
  id: "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody",
25
25
  defaultMessage: "Something went wrong while loading templates."
26
+ },
27
+ createTemplateButtonLabel: {
28
+ id: "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel",
29
+ defaultMessage: "New Template"
26
30
  }
27
31
  });
28
32
  export { t as messages };
@@ -2,13 +2,18 @@ import { useTemplateBrowserActions as e } from "./use-template-browser-actions.j
2
2
  import { createContext as t, useMemo as n } from "react";
3
3
  import { jsx as r } from "react/jsx-runtime";
4
4
  var i = /* @__PURE__ */ t(null);
5
- function a({ children: e, namespaceFQN: t, path: a }) {
6
- let o = n(() => ({
5
+ function a({ children: e, namespaceFQN: t, path: a, canCreateInCurrentNamespace: o }) {
6
+ let s = n(() => ({
7
7
  namespaceFQN: t,
8
- path: a
9
- }), [t, a]);
8
+ path: a,
9
+ canCreateInCurrentNamespace: o
10
+ }), [
11
+ t,
12
+ a,
13
+ o
14
+ ]);
10
15
  return /* @__PURE__ */ r(i.Provider, {
11
- value: o,
16
+ value: s,
12
17
  children: e
13
18
  });
14
19
  }
@@ -2,45 +2,47 @@ import { browserReducer as e, initialState as t } from "./reducer.js";
2
2
  import { BrowseStateContextProvider as n, BrowserActionsContextProvider as r, NavigationStateContextProvider as i, SearchStateContextProvider as a, SelectionStateContextProvider as o } from "./contexts.js";
3
3
  import { useReducer as s, useRef as c } from "react";
4
4
  import { jsx as l } from "react/jsx-runtime";
5
- function u({ children: u, namespaceFQN: d, itemsService: f, eventService: p, initialSelectedTemplateId: m }) {
6
- let [h, g] = s(e, {
5
+ function u({ children: u, namespaceFQN: d, itemsService: f, eventService: p, initialSelectedTemplateId: m, canCreateAtRoot: h = !1 }) {
6
+ let [g, _] = s(e, {
7
7
  ...t,
8
8
  namespaceFQN: d,
9
- selectedTemplateId: m ?? null
10
- }), _ = c(h);
11
- _.current = h;
12
- let v = c(/* @__PURE__ */ new Map()), y = c(f);
13
- y.current = f;
14
- let b = c(p);
15
- return b.current = p, /* @__PURE__ */ l(i, {
16
- namespaceFQN: h.namespaceFQN,
17
- path: h.path,
9
+ selectedTemplateId: m ?? null,
10
+ canCreateInCurrentNamespace: h
11
+ }), v = c(g);
12
+ v.current = g;
13
+ let y = c(/* @__PURE__ */ new Map()), b = c(f);
14
+ b.current = f;
15
+ let x = c(p);
16
+ return x.current = p, /* @__PURE__ */ l(i, {
17
+ namespaceFQN: g.namespaceFQN,
18
+ path: g.path,
19
+ canCreateInCurrentNamespace: g.canCreateInCurrentNamespace,
18
20
  children: /* @__PURE__ */ l(n, {
19
- namespaces: h.namespaces,
20
- templates: h.templates,
21
- isNamespacesExhausted: h.isNamespacesExhausted,
22
- namespaceNextMarker: h.namespaceNextMarker,
23
- templateNextMarker: h.templateNextMarker,
24
- isFetching: h.isFetching,
25
- isFetchingMore: h.isFetchingMore,
26
- initialLoadError: h.initialLoadError,
27
- browseError: h.browseError,
28
- loadMoreError: h.loadMoreError,
21
+ namespaces: g.namespaces,
22
+ templates: g.templates,
23
+ isNamespacesExhausted: g.isNamespacesExhausted,
24
+ namespaceNextMarker: g.namespaceNextMarker,
25
+ templateNextMarker: g.templateNextMarker,
26
+ isFetching: g.isFetching,
27
+ isFetchingMore: g.isFetchingMore,
28
+ initialLoadError: g.initialLoadError,
29
+ browseError: g.browseError,
30
+ loadMoreError: g.loadMoreError,
29
31
  children: /* @__PURE__ */ l(a, {
30
- searchValue: h.searchValue,
31
- searchQuery: h.searchQuery,
32
- searchResults: h.searchResults,
33
- searchNextMarker: h.searchNextMarker,
34
- isFetchingSearch: h.isFetchingSearch,
35
- searchError: h.searchError,
32
+ searchValue: g.searchValue,
33
+ searchQuery: g.searchQuery,
34
+ searchResults: g.searchResults,
35
+ searchNextMarker: g.searchNextMarker,
36
+ isFetchingSearch: g.isFetchingSearch,
37
+ searchError: g.searchError,
36
38
  children: /* @__PURE__ */ l(o, {
37
- selectedTemplateId: h.selectedTemplateId,
39
+ selectedTemplateId: g.selectedTemplateId,
38
40
  children: /* @__PURE__ */ l(r, {
39
- itemsServiceRef: y,
40
- eventServiceRef: b,
41
- stateRef: _,
42
- dispatch: g,
43
- levelCache: v,
41
+ itemsServiceRef: b,
42
+ eventServiceRef: x,
43
+ stateRef: v,
44
+ dispatch: _,
45
+ levelCache: y,
44
46
  children: u
45
47
  })
46
48
  })
@@ -3,6 +3,7 @@ var e = /* @__PURE__ */ function(e) {
3
3
  }({}), t = {
4
4
  namespaceFQN: "",
5
5
  path: [],
6
+ canCreateInCurrentNamespace: !1,
6
7
  namespaces: [],
7
8
  templates: [],
8
9
  isNamespacesExhausted: !1,
@@ -30,6 +31,7 @@ function n(t, n) {
30
31
  fqn: n.namespace.id,
31
32
  displayName: n.namespace.displayName
32
33
  }],
34
+ canCreateInCurrentNamespace: n.namespace.canCreate ?? !1,
33
35
  namespaces: [],
34
36
  templates: [],
35
37
  namespaceNextMarker: void 0,
@@ -43,6 +45,7 @@ function n(t, n) {
43
45
  ...t,
44
46
  namespaceFQN: n.fqn,
45
47
  path: t.path.filter((e) => n.fqn === e.fqn || n.fqn.startsWith(`${e.fqn}.`)),
48
+ canCreateInCurrentNamespace: n.cached.canCreate,
46
49
  namespaces: n.cached.namespaces,
47
50
  templates: n.cached.templates,
48
51
  namespaceNextMarker: n.cached.namespaceNextMarker,
@@ -97,7 +97,8 @@ function d(d, f, p, m, h) {
97
97
  templates: r.templates,
98
98
  namespaceNextMarker: r.namespaceNextMarker,
99
99
  templateNextMarker: r.templateNextMarker,
100
- isNamespacesExhausted: r.isNamespacesExhausted
100
+ isNamespacesExhausted: r.isNamespacesExhausted,
101
+ canCreate: r.canCreateInCurrentNamespace
101
102
  }), m({
102
103
  type: e.NavigateTo,
103
104
  namespace: t
@@ -188,7 +189,9 @@ function d(d, f, p, m, h) {
188
189
  }), s(() => f.current.onTemplateSelect?.(t)));
189
190
  }, P = (e) => {
190
191
  s(() => f.current.onTemplateEdit?.(e));
191
- }, F = async () => {
192
+ }, F = (e) => {
193
+ s(() => f.current.onCreateTemplate?.(e));
194
+ }, I = async () => {
192
195
  let { searchError: t, searchQuery: n, loadMoreError: r, initialLoadError: i, browseError: a, namespaceFQN: o } = p.current;
193
196
  if (t) {
194
197
  let t = x();
@@ -222,7 +225,8 @@ function d(d, f, p, m, h) {
222
225
  loadMore: M,
223
226
  selectTemplate: N,
224
227
  editTemplate: P,
225
- retry: F
228
+ createTemplate: F,
229
+ retry: I
226
230
  }), []);
227
231
  }
228
232
  export { d as useTemplateBrowserActions };
@@ -2,7 +2,7 @@ import { ConsumerStateContextProvider as e } from "./contexts/contexts.js";
2
2
  import { MetadataTemplateBrowserProvider as t } from "./contexts/provider.js";
3
3
  import { t as n } from "../../chunks/metadata-template-browser-controller.js";
4
4
  import { jsx as r } from "react/jsx-runtime";
5
- function i({ enterpriseId: i, itemsService: a, eventService: o, isLoading: s, isDisabled: c, initialSelectedTemplateId: l }) {
5
+ function i({ enterpriseId: i, itemsService: a, eventService: o, isLoading: s, isDisabled: c, initialSelectedTemplateId: l, canCreateAtRoot: u }) {
6
6
  return /* @__PURE__ */ r(e, {
7
7
  isDisabled: c,
8
8
  isLoading: s,
@@ -11,6 +11,7 @@ function i({ enterpriseId: i, itemsService: a, eventService: o, isLoading: s, is
11
11
  itemsService: a,
12
12
  eventService: o,
13
13
  initialSelectedTemplateId: l,
14
+ canCreateAtRoot: u,
14
15
  children: /* @__PURE__ */ r(n, {})
15
16
  })
16
17
  });
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Enterprise",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "আরও দেখান",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "এই নেমস্পেস লোড করার সময় কোনো সমস্যা হয়েছে।",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "এই ফোল্ডারে কোনো টেমপ্লেট বা নেমস্পেস নেই।",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "মেটাডেটা টেম্পলেট",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "এই মুহূর্তে, ব্যবহারের জন্য কোনও মেটাডেটা টেমপ্লেট প্রস্তুত নেই। আপনি আপনার অ্যাডমিনের কাছে পৌঁছিয়ে প্রথমটি তৈরি করতে পারেন।",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "টেমপ্লেট লোড করার সময় কোনো সমস্যা হয়েছে।",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "টেমপ্লেটগুলি লোড করা হচ্ছে",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Virksomhed",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "Vis flere",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "Noget gik galt under indlæsningen af dette navneområde.",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "Der er ingen skabeloner eller navneområder i denne mappe.",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "Metadataskabeloner",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "I øjeblikket er der ingen metadataskabeloner klar til brug. Du kan oprette den første ved at kontakte din administrator.",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "Noget gik galt under indlæsningen af skabeloner.",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "Indlæser skabeloner",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Unternehmen",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "Weitere anzeigen",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "Beim Laden dieses Namensraums ist ein Fehler aufgetreten.",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "In diesem Ordner sind keine Vorlagen oder Namensräume enthalten.",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "Metadatenvorlagen",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "Derzeit sind keine Metadatenvorlagen zur Verwendung verfügbar. Sie können die erste Vorlage erstellen, indem Sie sich an Ihren Administrator wenden.",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "Beim Laden der Vorlagen ist ein Fehler aufgetreten.",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "Vorlagen werden geladen",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Enterprise",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "Show more",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "Something went wrong while loading this namespace.",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "There are no templates or namespaces in this folder.",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "Metadata templates",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "At the moment, there are no metadata templates ready for use. You can create the first one by reaching out to your Admin.",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "Something went wrong while loading templates.",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "Loading templates",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Enterprise",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "Show more",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "Something went wrong while loading this namespace.",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "There are no templates or namespaces in this folder.",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "Metadata templates",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "At the moment, there are no metadata templates ready for use. You can create the first one by reaching out to your Admin.",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "Something went wrong while loading templates.",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "Loading templates",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Enterprise",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "Show more",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "Something went wrong while loading this namespace.",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "There are no templates or namespaces in this folder.",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "Metadata templates",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "At the moment, there are no metadata templates ready for use. You can create the first one by reaching out to your Admin.",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "Something went wrong while loading templates.",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "Loading templates",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Enterprise",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "Show more",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "Something went wrong while loading this namespace.",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "There are no templates or namespaces in this folder.",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "Metadata templates",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "At the moment, there are no metadata templates ready for use. You can create the first one by reaching out to your Admin.",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "Something went wrong while loading templates.",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "Loading templates",
@@ -6,10 +6,14 @@ groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumb
6
6
  groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel = Show more
7
7
  # Error body when navigating into a namespace fails to load
8
8
  groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody = Something went wrong while loading this namespace.
9
+ # Button label shown in the empty namespace state when the user is allowed to create a template
10
+ groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel = Create first template
9
11
  # Body text shown when the current namespace has no child namespaces or templates
10
12
  groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody = There are no templates or namespaces in this folder.
11
13
  # Accessible label for the browse list
12
14
  groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel = Metadata templates
15
+ # Label for the button that opens the template editor to create a new template in the current namespace
16
+ groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel = New Template
13
17
  # Body text shown when the initial load returns no templates at all
14
18
  groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody = At the moment, there are no metadata templates ready for use. You can create the first one by reaching out to your Admin.
15
19
  # Error body when the initial template list fails to load
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "⟦萬萬 ËйťєгΡѓīśе 國國⟧",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "⟦萬萬 Şħōω mõґé 國國⟧",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "⟦萬萬萬萬萬萬萬萬萬萬萬萬萬萬 Ŝσmêţħìиğ щёлŧ ώřöńġ шнîĺē ĺōáďϊηĝ ţħìş лàmęŝΡάćě. 國國國國國國國國國國國國國國⟧",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "⟦萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬 Ŧнëŗė ãřê ʼnō τëmΡļăţëş õґ ʼnąmėśΡαċёś іπ ţĥίŝ ƒôĺďèѓ. 國國國國國國國國國國國國國國國⟧",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "⟦萬萬萬萬萬 Μéţàďάţá ŧėmΡļåťėѕ 國國國國國⟧",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "⟦萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬 Ąť τħě mòmëпť, ţħéґê αŕé πò mĕŧαďáťá ťëmΡĺàŧĕş řеǻďγ ƒőŕ ŭśé. Ýőü ćąπ çŗêάţё ťĥе ƒīŕśŧ öлē ьÿ ѓёäснїŋĝ όúτ ťó ÿôúґ Āďmìп. 國國國國國國國國國國國國國國國國國國國國國國國國國國國國國國國國國國國國⟧",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "⟦萬萬萬萬萬萬萬萬萬萬萬萬萬 Śòmĕŧĥíиğ щéйŧ шѓόпğ шĥįľę ļοäďϊлġ ŧėmΡľάţĕѕ. 國國國國國國國國國國國國國⟧",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "⟦萬萬萬萬萬 Ĺôáďìήĝ τєmΡĺαţеş 國國國國國⟧",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Empresa",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "Mostrar más",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "Se ha producido un error al cargar este espacio de nombres.",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "No hay plantillas ni espacios de nombres en esta carpeta.",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "Plantillas de metadatos",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "De momento, no hay plantillas de metadatos listas para usar. Para crear la primera, tiene que ponerse en contacto con su admin.",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "Se ha producido un error al cargar las plantillas.",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "Cargando plantillas",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Empresa",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "Mostrar más",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "Se ha producido un error al cargar este espacio de nombres.",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "No hay plantillas ni espacios de nombres en esta carpeta.",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "Plantillas de metadatos",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "De momento, no hay plantillas de metadatos listas para usar. Para crear la primera, tiene que ponerse en contacto con su admin.",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "Se ha producido un error al cargar las plantillas.",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "Cargando plantillas",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Yritys",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "Näytä enemmän",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "Tämän nimitilan lataamisessa tapahtui virhe.",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "Tässä kansiossa ei ole malleja tai nimitiloja.",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "Metatietomallit",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "Tällä hetkellä ei ole käyttövalmiita metatietomalleja. Voit luoda ensimmäisen ottamalla yhteyttä järjestelmänvalvojaan.",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "Mallien lataamisessa tapahtui virhe.",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "Ladataan malleja",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Enterprise",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "Afficher plus d’informations",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "Une erreur est survenue lors du chargement de cet espace de noms.",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "Ce dossier ne contient aucun modèle ou espace de noms.",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "Modèles de métadonnées",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "Aucun modèle de métadonnées n’est prêt à être utilisé pour le moment. Vous pouvez créer le premier en contactant votre administrateur.",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "Une erreur est survenue lors du chargement des modèles.",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "Chargement des modèles",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Enterprise",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "Afficher plus d’informations",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "Une erreur est survenue lors du chargement de cet espace de noms.",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "Ce dossier ne contient aucun modèle ou espace de noms.",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "Modèles de métadonnées",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "Aucun modèle de métadonnées n’est prêt à être utilisé pour le moment. Vous pouvez créer le premier en contactant votre administrateur.",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "Une erreur est survenue lors du chargement des modèles.",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "Chargement des modèles",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Enterprise",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "और अधिक दिखाएं",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "इस नेमस्पेस को लोड करते समय कुछ गलत हुआ है।",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "इस फ़ोल्डर में कोई टेम्पलेट या नेमस्पेस नहीं है।",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "मेटाडेटा टेम्पलेट्स",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "इस समय, उपयोग करने के लिए कोई मेटाडेटा टेम्पलेट तैयार नहीं है। आप अपने एडमिन से संपर्क करके पहला टेम्पलेट बना सकते हैं।",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "टेम्पलेट्स को लोड करते समय कुछ गलत हुआ है।",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "टेम्पलेट्स लोड हो रहे हैं",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Azienda",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "Mostra di più",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "Si è verificato un errore durante il caricamento di questo spazio dei nomi.",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "Non sono presenti modelli o spazi dei nomi in questa cartella.",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "Modelli metadati",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "Al momento non sono disponibili modelli di metadati pronti per l’uso. Puoi creare il primo contattando l’amministratore.",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "Si è verificato un errore durante il caricamento dei modelli.",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "Caricamento modelli in corso",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Enterprise",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "さらに表示",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "この名前空間の読み込み中に問題が発生しました。",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "このフォルダにはテンプレートや名前空間はありません。",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "メタデータテンプレート",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "現時点では、使用できるメタデータテンプレートはありません。管理者に連絡して、最初のテンプレートを作成できます。",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "テンプレートの読み込み中に問題が発生しました。",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "テンプレートを読み込み中",
@@ -1 +1 @@
1
- [{"id":"groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel","description":"Accessible label for the browse list","defaultMessage":"Metadata templates"},{"id":"groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody","description":"Error body when navigating into a namespace fails to load","defaultMessage":"Something went wrong while loading this namespace."},{"id":"groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody","description":"Body text shown when the current namespace has no child namespaces or templates","defaultMessage":"There are no templates or namespaces in this folder."}]
1
+ [{"id":"groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel","description":"Accessible label for the browse list","defaultMessage":"Metadata templates"},{"id":"groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody","description":"Error body when navigating into a namespace fails to load","defaultMessage":"Something went wrong while loading this namespace."},{"id":"groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody","description":"Body text shown when the current namespace has no child namespaces or templates","defaultMessage":"There are no templates or namespaces in this folder."},{"id":"groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel","description":"Button label shown in the empty namespace state when the user is allowed to create a template","defaultMessage":"Create first template"}]
@@ -1 +1 @@
1
- [{"id":"groupSharedFeatures.metadataTemplateBrowser.container.searchInputPlaceholder","description":"Placeholder text for the template search input","defaultMessage":"Search templates"},{"id":"groupSharedFeatures.metadataTemplateBrowser.container.searchInputAriaLabel","description":"Aria label for the template search input","defaultMessage":"Search templates"},{"id":"groupSharedFeatures.metadataTemplateBrowser.container.searchInputClearAriaLabel","description":"Aria label for the clear button inside the template search input","defaultMessage":"Clear search"},{"id":"groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel","description":"Aria label for the full-area skeleton shown while templates are loading","defaultMessage":"Loading templates"},{"id":"groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody","description":"Body text shown when the initial load returns no templates at all","defaultMessage":"At the moment, there are no metadata templates ready for use. You can create the first one by reaching out to your Admin."},{"id":"groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody","description":"Error body when the initial template list fails to load","defaultMessage":"Something went wrong while loading templates."}]
1
+ [{"id":"groupSharedFeatures.metadataTemplateBrowser.container.searchInputPlaceholder","description":"Placeholder text for the template search input","defaultMessage":"Search templates"},{"id":"groupSharedFeatures.metadataTemplateBrowser.container.searchInputAriaLabel","description":"Aria label for the template search input","defaultMessage":"Search templates"},{"id":"groupSharedFeatures.metadataTemplateBrowser.container.searchInputClearAriaLabel","description":"Aria label for the clear button inside the template search input","defaultMessage":"Clear search"},{"id":"groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel","description":"Aria label for the full-area skeleton shown while templates are loading","defaultMessage":"Loading templates"},{"id":"groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody","description":"Body text shown when the initial load returns no templates at all","defaultMessage":"At the moment, there are no metadata templates ready for use. You can create the first one by reaching out to your Admin."},{"id":"groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody","description":"Error body when the initial template list fails to load","defaultMessage":"Something went wrong while loading templates."},{"id":"groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel","description":"Label for the button that opens the template editor to create a new template in the current namespace","defaultMessage":"New Template"}]
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Enterprise",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "더 보기",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "이 네임스페이스를 로드하는 중 문제가 발생했습니다.",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "이 폴더에는 템플릿 또는 네임스페이스가 없습니다.",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "메타데이터 템플릿",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "현재 사용할 수 있는 메타데이터 템플릿이 없습니다. 관리자에게 문의하여 첫 번째 템플릿을 만들어 보세요.",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "템플릿을 로드하는 중 문제가 발생했습니다.",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "템플릿 불러오는 중",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Enterprise",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "Vis mer",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "Noe gikk galt under lasting av dette navnerommet.",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "Det finnes ingen maler eller navnerom i denne mappen.",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "Metadatamaler",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "For øyeblikket er det ingen metadatamaler klare til bruk. Du kan opprette den første ved å kontakte admin.",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "Noe gikk galt under lasting av maler.",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "Laster inn maler",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Onderneming",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "Meer weergeven",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "Er is iets fout gegaan bij het laden van deze naamruimte.",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "Deze map bevat geen sjablonen of naamruimten.",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "Metagegevenssjablonen",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "Op dit moment zijn er geen metagegevenssjablonen klaar voor gebruik. U kunt de eerste maken door contact op te nemen met uw beheerder.",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "Er is iets fout gegaan bij het laden van sjablonen.",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "Sjablonen worden geladen",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Enterprise",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "Pokaż więcej",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "Podczas wczytywania tej nazwy wystąpił błąd.",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "W tym folderze nie ma szablonów ani przestrzeni nazw.",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "Szablony metadanych",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "W tej chwili nie ma gotowych szablonów metadanych do użycia. Możesz utworzyć pierwszy, kontaktując się z administratorem.",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "Podczas wczytywania szablonów wystąpił błąd.",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "Trwa wczytywanie szablonów",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Empresa",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "Exibir mais",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "Algo deu errado ao carregar este espaço de nomes.",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "Não há modelos ou espaços de nomes nesta pasta.",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "Aplicar modelos de metadados",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "No momento, não há modelos de metadados prontos para uso. Você pode criar o primeiro entrando em contato com seu administrador.",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "Algo deu errado ao carregar modelos.",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "Carregando modelos",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Enterprise",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "Показать больше",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "При загрузке этого пространства имен произошла ошибка.",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "В этой папке нет шаблонов или пространств имен.",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "Шаблоны метаданных",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "В данный момент нет готовых к использованию шаблонов метаданных. Вы можете создать первый шаблон, обратившись к своему администратору.",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "При загрузке шаблонов произошла ошибка.",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "Загрузка шаблонов",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Företag",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "Visa mer",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "Något gick fel när den här namnrymden lästes in.",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "Det finns inga mallar eller namnrymder i den här mappen.",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "Metadatamallar",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "För närvarande finns det inga metadatamallar redo att använda. Du kan skapa den första genom att kontakta din administratör.",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "Något gick fel vid inläsning av mallar.",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "Läser in mallar",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Enterprise",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "Daha fazlasını göster",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "Bu namespace yüklenirken bir hata oluştu.",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "Bu klasörde şablon veya ad alanı yok.",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "Meta Veri Şablonları",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "Şu anda kullanıma hazır bir meta veri şablonu yok. Yöneticinizle iletişime geçerek ilk şablonu oluşturabilirsiniz.",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "Şablonlar yüklenirken bir hata oluştu.",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "Şablonlar yükleniyor",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Enterprise",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "显示更多",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "加载此命名空间时出错。",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "此文件夹中没有模板或命名空间。",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "元数据模板",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "当前尚无可用的元数据模板。您可以通过联系管理员创建第一个。",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "加载模板时出错。",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "正在加载模板",
@@ -3,8 +3,10 @@ export default {
3
3
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.enterpriseCrumbLabel": "Enterprise",
4
4
  "groupSharedFeatures.metadataTemplateBrowser.breadcrumbNavigation.truncatedLinksIconAriaLabel": "顯示更多",
5
5
  "groupSharedFeatures.metadataTemplateBrowser.browseList.browseErrorBody": "載入此命名空間時發生問題。",
6
+ "groupSharedFeatures.metadataTemplateBrowser.browseList.createFirstTemplateButtonLabel": "Create first template",
6
7
  "groupSharedFeatures.metadataTemplateBrowser.browseList.emptyStateBody": "此資料夾中沒有範本或命名空間。",
7
8
  "groupSharedFeatures.metadataTemplateBrowser.browseList.listAriaLabel": "中繼資料範本",
9
+ "groupSharedFeatures.metadataTemplateBrowser.container.createTemplateButtonLabel": "New Template",
8
10
  "groupSharedFeatures.metadataTemplateBrowser.container.initialEmptyStateBody": "目前沒有可使用的中繼資料範本。 您可以聯絡管理員,建立第一個項目。",
9
11
  "groupSharedFeatures.metadataTemplateBrowser.container.initialLoadErrorBody": "載入範本時發生問題。",
10
12
  "groupSharedFeatures.metadataTemplateBrowser.container.loadingAriaLabel": "載入範本中",
@@ -1 +1 @@
1
- ._row_ybl3t_2{border-radius:var(--bp-radius-06);box-sizing:border-box;cursor:pointer;align-items:center;gap:var(--bp-space-020,8px);outline-offset:-2px;padding:var(--bp-space-020,8px) var(--bp-space-030,12px);flex:1;width:100%;display:flex}._trailingSlotHoverOnly_ybl3t_15{opacity:0}._item_ybl3t_19{outline:none;min-height:40px;display:flex}._item_ybl3t_19:hover ._row_ybl3t_2{background-color:var(--bp-surface-surface-hover)}._item_ybl3t_19[data-selected] ._row_ybl3t_2{background-color:var(--bp-surface-item-small-surface-selected);outline:var(--bp-border-02) solid var(--bp-border-list-item-border-selected)}._item_ybl3t_19[data-focus-visible] ._row_ybl3t_2{outline:2px solid var(--bp-outline-focus-on-light)}._item_ybl3t_19._disabled_ybl3t_40 ._row_ybl3t_2{cursor:default;opacity:.3}._item_ybl3t_19._disabled_ybl3t_40[data-focus-visible] ._row_ybl3t_2{opacity:1}._item_ybl3t_19._disabled_ybl3t_40:hover:not([data-selected]) ._row_ybl3t_2,._item_ybl3t_19._disabled_ybl3t_40[data-hovered]:not([data-selected]) ._row_ybl3t_2{background-color:#0000}._item_ybl3t_19:hover ._trailingSlotHoverOnly_ybl3t_15,._item_ybl3t_19[data-hovered] ._trailingSlotHoverOnly_ybl3t_15,._item_ybl3t_19:focus-within ._trailingSlotHoverOnly_ybl3t_15{opacity:1}._leadingIcon_ybl3t_59{flex-shrink:0;align-items:center;display:flex}._content_ybl3t_66{flex:1;min-width:0}._trailingSlot_ybl3t_15{flex-shrink:0}._subtitle_ybl3t_77{overflow-wrap:break-word;display:block}
1
+ ._row_x9hxe_2{border-radius:var(--bp-radius-06);box-sizing:border-box;cursor:pointer;align-items:center;gap:var(--bp-space-020,8px);outline-offset:-2px;padding:var(--bp-space-020,8px) var(--bp-space-040,14px);flex:1;width:100%;display:flex}._trailingSlotHoverOnly_x9hxe_15{opacity:0}._item_x9hxe_19{outline:none;min-height:40px;display:flex}._item_x9hxe_19:hover ._row_x9hxe_2{background-color:var(--bp-surface-surface-hover)}._item_x9hxe_19[data-selected] ._row_x9hxe_2{background-color:var(--bp-surface-item-small-surface-selected);outline:var(--bp-border-02) solid var(--bp-border-list-item-border-selected)}._item_x9hxe_19[data-focus-visible] ._row_x9hxe_2{outline:2px solid var(--bp-outline-focus-on-light)}._item_x9hxe_19._disabled_x9hxe_40 ._row_x9hxe_2{cursor:default;opacity:.3}._item_x9hxe_19._disabled_x9hxe_40[data-focus-visible] ._row_x9hxe_2{opacity:1}._item_x9hxe_19._disabled_x9hxe_40:hover:not([data-selected]) ._row_x9hxe_2,._item_x9hxe_19._disabled_x9hxe_40[data-hovered]:not([data-selected]) ._row_x9hxe_2{background-color:#0000}._item_x9hxe_19:hover ._trailingSlotHoverOnly_x9hxe_15,._item_x9hxe_19[data-hovered] ._trailingSlotHoverOnly_x9hxe_15,._item_x9hxe_19:focus-within ._trailingSlotHoverOnly_x9hxe_15{opacity:1}._leadingIcon_x9hxe_59{flex-shrink:0;align-items:center;display:flex}._content_x9hxe_66{flex:1;min-width:0}._trailingSlot_x9hxe_15{flex-shrink:0}._subtitle_x9hxe_77{overflow-wrap:break-word;display:block}
@@ -1 +1 @@
1
- ._container_qa97y_1{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}._searchInput_qa97y_9{margin-bottom:var(--space-4)}
1
+ ._container_1dqk1_1{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}._searchInput_1dqk1_9{margin-bottom:var(--space-4)}._createTemplateButton_1dqk1_13{justify-content:flex-start;display:flex}
@@ -14,4 +14,9 @@ export declare const messages: {
14
14
  description: string;
15
15
  id: string;
16
16
  };
17
+ createFirstTemplateButtonLabel: {
18
+ defaultMessage: string;
19
+ description: string;
20
+ id: string;
21
+ };
17
22
  };
@@ -29,4 +29,9 @@ export declare const messages: {
29
29
  description: string;
30
30
  id: string;
31
31
  };
32
+ createTemplateButtonLabel: {
33
+ defaultMessage: string;
34
+ description: string;
35
+ id: string;
36
+ };
32
37
  };
@@ -1,8 +1,13 @@
1
1
  /**
2
- * Browser chrome: search input, breadcrumb, and the list area.
2
+ * Browser chrome: search input, breadcrumb, optional create-template button, and the list area.
3
3
  * Full-area states (load error, empty browse) are owned by
4
4
  * `MetadataTemplateBrowserController`. Initial loading keeps search on screen
5
5
  * (disabled) and loading confined to the list region; breadcrumbs stay hidden until
6
6
  * the first browse completes.
7
+ *
8
+ * The create-template button appears below the breadcrumb when the current namespace
9
+ * allows creation (`canCreateInCurrentNamespace`), browse mode is active (no search
10
+ * query), no fetch is in progress, and the list is not empty. When the list is empty,
11
+ * `BrowseList` shows its own "Create first template" affordance instead.
7
12
  */
8
13
  export declare function MetadataTemplateBrowserContainer(): import("react/jsx-runtime").JSX.Element;
@@ -6,7 +6,7 @@ export declare const NavigationStateContext: import('react').Context<NavigationS
6
6
  interface NavigationStateContextProviderProps extends NavigationStateContextValue {
7
7
  readonly children: React.ReactNode;
8
8
  }
9
- export declare function NavigationStateContextProvider({ children, namespaceFQN, path, }: Readonly<NavigationStateContextProviderProps>): import("react/jsx-runtime").JSX.Element;
9
+ export declare function NavigationStateContextProvider({ children, namespaceFQN, path, canCreateInCurrentNamespace, }: Readonly<NavigationStateContextProviderProps>): import("react/jsx-runtime").JSX.Element;
10
10
  /** Holds the current page of namespaces and templates, fetch flags, and error state for browse mode. */
11
11
  export declare const BrowseStateContext: import('react').Context<BrowseStateContextValue | null>;
12
12
  interface BrowseStateContextProviderProps extends BrowseStateContextValue {
@@ -5,10 +5,16 @@ export interface MetadataTemplateBrowserProviderProps {
5
5
  readonly itemsService: ItemsService;
6
6
  readonly eventService: EventService;
7
7
  readonly initialSelectedTemplateId?: string;
8
+ /**
9
+ * Whether template creation is allowed at the root namespace (enterprise level).
10
+ * Mirrored into `canCreateInCurrentNamespace` in the navigation state on mount.
11
+ * @default false
12
+ */
13
+ readonly canCreateAtRoot?: boolean;
8
14
  }
9
15
  /**
10
16
  * Root context provider for the metadata template browser. Initialises the
11
17
  * reducer, wraps consumer-provided services in stable refs, and composes all
12
18
  * state and actions contexts in a single tree.
13
19
  */
14
- export declare function MetadataTemplateBrowserProvider({ children, namespaceFQN, itemsService, eventService, initialSelectedTemplateId, }: Readonly<MetadataTemplateBrowserProviderProps>): import("react/jsx-runtime").JSX.Element;
20
+ export declare function MetadataTemplateBrowserProvider({ children, namespaceFQN, itemsService, eventService, initialSelectedTemplateId, canCreateAtRoot, }: Readonly<MetadataTemplateBrowserProviderProps>): import("react/jsx-runtime").JSX.Element;
@@ -22,6 +22,7 @@ export declare enum BrowserActionType {
22
22
  export interface BrowserState {
23
23
  namespaceFQN: string;
24
24
  path: BreadcrumbEntry[];
25
+ canCreateInCurrentNamespace: boolean;
25
26
  namespaces: MetadataNamespace[];
26
27
  templates: MetadataTemplate[];
27
28
  isNamespacesExhausted: boolean;
@@ -15,9 +15,16 @@ export interface MetadataTemplateBrowserProps {
15
15
  isDisabled?: boolean;
16
16
  /** Template ID to auto-select after the initial load completes. */
17
17
  initialSelectedTemplateId?: string;
18
+ /**
19
+ * Whether template creation is allowed at the root (enterprise) namespace.
20
+ * When true and `eventService.onCreateTemplate` is provided, a create-template
21
+ * button is shown below the breadcrumb in browse mode.
22
+ * @default false
23
+ */
24
+ canCreateAtRoot?: boolean;
18
25
  }
19
26
  /**
20
27
  * Public entry point for the metadata template browser.
21
28
  * Wraps the provider and controller into a single composable component.
22
29
  */
23
- export declare function MetadataTemplateBrowser({ enterpriseId, itemsService, eventService, isLoading, isDisabled, initialSelectedTemplateId, }: Readonly<MetadataTemplateBrowserProps>): import("react/jsx-runtime").JSX.Element;
30
+ export declare function MetadataTemplateBrowser({ enterpriseId, itemsService, eventService, isLoading, isDisabled, initialSelectedTemplateId, canCreateAtRoot, }: Readonly<MetadataTemplateBrowserProps>): import("react/jsx-runtime").JSX.Element;
@@ -2,5 +2,6 @@ import { MetadataNamespace } from '../../types';
2
2
  export interface GenerateNamespacesOptions {
3
3
  parentFqn?: string;
4
4
  offset?: number;
5
+ canCreate?: boolean;
5
6
  }
6
7
  export declare const generateNamespaces: (count: number, options?: GenerateNamespacesOptions) => MetadataNamespace[];
@@ -5,6 +5,8 @@ export declare enum TemplateRowVariant {
5
5
  export interface MetadataNamespace {
6
6
  id: string;
7
7
  displayName: string;
8
+ /** When true, the browser shows a create-template affordance while browsing this namespace. */
9
+ canCreate?: boolean;
8
10
  }
9
11
  export interface MetadataTemplate {
10
12
  id: string;
@@ -58,6 +60,8 @@ export interface EventService {
58
60
  * tracked separately by the `isFetchingMore` flag in `BrowseStateContextValue`.
59
61
  */
60
62
  onNewViewLoading?: (isFetching: boolean) => void;
63
+ /** Called when the user clicks the create-template affordance while browsing a namespace. */
64
+ onCreateTemplate?: (namespaceFQN: string) => void;
61
65
  }
62
66
  export interface BreadcrumbEntry {
63
67
  fqn: string;
@@ -74,6 +78,8 @@ export interface SearchStateContextValue {
74
78
  export interface NavigationStateContextValue {
75
79
  namespaceFQN: string;
76
80
  path: BreadcrumbEntry[];
81
+ /** True when the current namespace (or root) allows template creation. */
82
+ canCreateInCurrentNamespace: boolean;
77
83
  }
78
84
  export interface BrowseStateContextValue {
79
85
  namespaces: MetadataNamespace[];
@@ -114,6 +120,8 @@ export interface BrowserActionsContextValue {
114
120
  selectTemplate: (template: MetadataTemplate) => Promise<void>;
115
121
  /** Notifies the event service that the user wants to edit a template. */
116
122
  editTemplate: (templateId: string) => void;
123
+ /** Notifies the event service that the user wants to create a template in the given namespace. */
124
+ createTemplate: (namespaceFQN: string) => void;
117
125
  /** Re-runs the failing operation based on the current mode (browse or search). */
118
126
  retry: () => Promise<void>;
119
127
  }
@@ -123,4 +131,6 @@ export interface LevelCache {
123
131
  namespaceNextMarker: string | undefined;
124
132
  templateNextMarker: string | undefined;
125
133
  isNamespacesExhausted: boolean;
134
+ /** Cached `canCreateInCurrentNamespace` for this namespace, restored on `navigateBack`. */
135
+ canCreate: boolean;
126
136
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@box/metadata-template-browser",
3
- "version": "1.19.6",
3
+ "version": "1.20.0",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "peerDependencies": {
6
6
  "@box/blueprint-web": "^14.18.0",