@lablup/ui-common 0.2.0-alpha.17 → 0.2.0-alpha.19

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 (173) hide show
  1. package/README.md +3 -2
  2. package/astryx/components/Board.doc.mjs +122 -0
  3. package/astryx/components/Board.tsx +3 -0
  4. package/astryx/components/Form.doc.mjs +1 -1
  5. package/astryx/docs/ui-common.doc.mjs +1 -1
  6. package/dist/assets/components/Board/Board.css +2 -0
  7. package/dist/assets/components/Form/FormItemVisual.css +1 -1
  8. package/dist/astryx/DateInput/tokens.stylex.d.ts +1 -0
  9. package/dist/astryx/DateInput/tokens.stylex.js +1 -0
  10. package/dist/astryx/Icon/IconSize.stylex.d.ts +1 -0
  11. package/dist/astryx/Icon/IconSize.stylex.js +1 -0
  12. package/dist/astryx/Indicator/indicator.markers.stylex.d.ts +1 -0
  13. package/dist/astryx/Indicator/indicator.markers.stylex.js +1 -0
  14. package/dist/astryx/Layer/layerAnimations.stylex.d.ts +1 -0
  15. package/dist/astryx/Layer/layerAnimations.stylex.js +1 -0
  16. package/dist/astryx/Layer/layerTextReset.stylex.d.ts +1 -0
  17. package/dist/astryx/Layer/layerTextReset.stylex.js +1 -0
  18. package/dist/astryx/Layer/layerViewportInset.stylex.d.ts +1 -0
  19. package/dist/astryx/Layer/layerViewportInset.stylex.js +1 -0
  20. package/dist/astryx/Layout/container.stylex.d.ts +1 -0
  21. package/dist/astryx/Layout/container.stylex.js +1 -0
  22. package/dist/astryx/Layout/edgeCompensation.stylex.d.ts +1 -0
  23. package/dist/astryx/Layout/edgeCompensation.stylex.js +1 -0
  24. package/dist/astryx/Layout/padding.stylex.d.ts +1 -0
  25. package/dist/astryx/Layout/padding.stylex.js +1 -0
  26. package/dist/astryx/Markdown/plugin-renderer.d.ts +1 -0
  27. package/dist/astryx/Markdown/plugin-renderer.js +1 -0
  28. package/dist/astryx/NavItem/navItemStyles.stylex.d.ts +1 -0
  29. package/dist/astryx/NavItem/navItemStyles.stylex.js +1 -0
  30. package/dist/astryx/Selector/selectorPresentation.stylex.d.ts +1 -0
  31. package/dist/astryx/Selector/selectorPresentation.stylex.js +1 -0
  32. package/dist/astryx/Stack/stack.stylex.d.ts +1 -0
  33. package/dist/astryx/Stack/stack.stylex.js +1 -0
  34. package/dist/astryx/Stack/stackItem.stylex.d.ts +1 -0
  35. package/dist/astryx/Stack/stackItem.stylex.js +1 -0
  36. package/dist/astryx/Text/text.stylex.d.ts +1 -0
  37. package/dist/astryx/Text/text.stylex.js +1 -0
  38. package/dist/astryx/theme/dataTokens.stylex.d.ts +1 -0
  39. package/dist/astryx/theme/dataTokens.stylex.js +1 -0
  40. package/dist/astryx/theme/neutral/fonts.css +3 -0
  41. package/dist/astryx/utils/focusOutline.stylex.d.ts +1 -0
  42. package/dist/astryx/utils/focusOutline.stylex.js +1 -0
  43. package/dist/astryx/utils/interactionOverlay.stylex.d.ts +1 -0
  44. package/dist/astryx/utils/interactionOverlay.stylex.js +1 -0
  45. package/dist/components/Board/Board.d.ts +102 -0
  46. package/dist/components/Board/Board.messages.d.ts +62 -0
  47. package/dist/components/Board/Board.messages.js +68 -0
  48. package/dist/components/Board/Board.messages.js.map +1 -0
  49. package/dist/components/Board/Board2.js +607 -0
  50. package/dist/components/Board/Board2.js.map +1 -0
  51. package/dist/components/Board/engine.d.ts +60 -0
  52. package/dist/components/Board/engine.js +397 -0
  53. package/dist/components/Board/engine.js.map +1 -0
  54. package/dist/components/Board/index.d.ts +4 -0
  55. package/dist/components/Board/index.js +3 -0
  56. package/dist/components/Board/layout.d.ts +81 -0
  57. package/dist/components/Board/layout.js +67 -0
  58. package/dist/components/Board/layout.js.map +1 -0
  59. package/dist/components/Board/scroll.d.ts +38 -0
  60. package/dist/components/Board/scroll.js +42 -0
  61. package/dist/components/Board/scroll.js.map +1 -0
  62. package/dist/components/DataGrid/DataGrid2.js +128 -128
  63. package/dist/components/DataGrid/DataGrid2.js.map +1 -1
  64. package/dist/components/Form/FormItem.d.ts +6 -1
  65. package/dist/components/Form/FormItem.js +68 -67
  66. package/dist/components/Form/FormItem.js.map +1 -1
  67. package/dist/components/Form/FormItemVisual.d.ts +7 -0
  68. package/dist/components/Form/FormItemVisual2.js +60 -55
  69. package/dist/components/Form/FormItemVisual2.js.map +1 -1
  70. package/dist/components/NotificationStack/NotificationStack2.js +1 -0
  71. package/dist/components/NotificationStack/NotificationStack2.js.map +1 -1
  72. package/dist/components/PageHeader/PageHeader2.js +4 -4
  73. package/dist/components/PagedSelector/PagedSelector.d.ts +1 -1
  74. package/dist/components/PagedSelector/PagedSelector2.js +37 -37
  75. package/dist/components/PagedSelector/PagedSelector2.js.map +1 -1
  76. package/dist/components/SelectionLabel/SelectionLabel.js +4 -4
  77. package/dist/forks/ComplexSelector/ComplexSelector.d.ts +82 -6
  78. package/dist/forks/ComplexSelector/ComplexSelector.js +170 -114
  79. package/dist/forks/ComplexSelector/ComplexSelector.js.map +1 -1
  80. package/dist/forks/ComplexSelector/ComplexSelector.styles.d.ts +40 -0
  81. package/dist/forks/ComplexSelector/ComplexSelector.styles.js +46 -6
  82. package/dist/forks/ComplexSelector/ComplexSelector.styles.js.map +1 -1
  83. package/dist/forks/ComplexSelector/index.d.ts +1 -1
  84. package/dist/forks/Drawer/Drawer.d.ts +21 -3
  85. package/dist/forks/Drawer/Drawer.js +70 -65
  86. package/dist/forks/Drawer/Drawer.js.map +1 -1
  87. package/dist/forks/Drawer/Drawer.styles.d.ts +16 -0
  88. package/dist/forks/Drawer/Drawer.styles.js +16 -0
  89. package/dist/forks/Drawer/Drawer.styles.js.map +1 -1
  90. package/dist/forks/Drawer/useDrawerDialogPresence.js.map +1 -1
  91. package/dist/forks/Tour/Tour.js +38 -40
  92. package/dist/forks/Tour/Tour.js.map +1 -1
  93. package/dist/forks/Tour/TourContext.js.map +1 -1
  94. package/dist/forks/Tour/TourStep.js.map +1 -1
  95. package/dist/forks/Tour/TourStep.styles.js.map +1 -1
  96. package/dist/forks/Tour/useTour.js.map +1 -1
  97. package/dist/i18n/catalog.js +27 -25
  98. package/dist/i18n/catalog.js.map +1 -1
  99. package/dist/i18n/locales/de-DE.js +60 -0
  100. package/dist/i18n/locales/de-DE.js.map +1 -1
  101. package/dist/i18n/locales/el-GR.js +60 -0
  102. package/dist/i18n/locales/el-GR.js.map +1 -1
  103. package/dist/i18n/locales/es-ES.js +60 -0
  104. package/dist/i18n/locales/es-ES.js.map +1 -1
  105. package/dist/i18n/locales/fi-FI.js +60 -0
  106. package/dist/i18n/locales/fi-FI.js.map +1 -1
  107. package/dist/i18n/locales/fr-FR.js +60 -0
  108. package/dist/i18n/locales/fr-FR.js.map +1 -1
  109. package/dist/i18n/locales/id-ID.js +60 -0
  110. package/dist/i18n/locales/id-ID.js.map +1 -1
  111. package/dist/i18n/locales/it-IT.js +60 -0
  112. package/dist/i18n/locales/it-IT.js.map +1 -1
  113. package/dist/i18n/locales/ja-JP.js +60 -0
  114. package/dist/i18n/locales/ja-JP.js.map +1 -1
  115. package/dist/i18n/locales/ko-KR.js +60 -0
  116. package/dist/i18n/locales/ko-KR.js.map +1 -1
  117. package/dist/i18n/locales/mn-MN.js +60 -0
  118. package/dist/i18n/locales/mn-MN.js.map +1 -1
  119. package/dist/i18n/locales/ms-MY.js +60 -0
  120. package/dist/i18n/locales/ms-MY.js.map +1 -1
  121. package/dist/i18n/locales/pl-PL.js +60 -0
  122. package/dist/i18n/locales/pl-PL.js.map +1 -1
  123. package/dist/i18n/locales/pt-BR.js +60 -0
  124. package/dist/i18n/locales/pt-BR.js.map +1 -1
  125. package/dist/i18n/locales/pt-PT.js +60 -0
  126. package/dist/i18n/locales/pt-PT.js.map +1 -1
  127. package/dist/i18n/locales/ru-RU.js +60 -0
  128. package/dist/i18n/locales/ru-RU.js.map +1 -1
  129. package/dist/i18n/locales/th-TH.js +60 -0
  130. package/dist/i18n/locales/th-TH.js.map +1 -1
  131. package/dist/i18n/locales/tr-TR.js +60 -0
  132. package/dist/i18n/locales/tr-TR.js.map +1 -1
  133. package/dist/i18n/locales/vi-VN.js +60 -0
  134. package/dist/i18n/locales/vi-VN.js.map +1 -1
  135. package/dist/i18n/locales/zh-CN.js +60 -0
  136. package/dist/i18n/locales/zh-CN.js.map +1 -1
  137. package/dist/i18n/locales/zh-TW.js +60 -0
  138. package/dist/i18n/locales/zh-TW.js.map +1 -1
  139. package/dist/index.d.ts +7 -5
  140. package/dist/index.js +61 -59
  141. package/dist/instance.js +2 -2
  142. package/dist/locales/en.generated.js +34 -0
  143. package/dist/locales/en.json +136 -0
  144. package/dist/locales/pseudo.generated.js +34 -0
  145. package/dist/locales/pseudo.json +102 -0
  146. package/dist/theme/lablup/built/lablup.d.ts +3 -3
  147. package/dist/theme/lablup/built/lablup.js +24 -5
  148. package/dist/theme/lablup/built/lablup.variants.d.ts +2 -2
  149. package/dist/theme/lablup/built/theme.css +70 -63
  150. package/dist/theme/lablup/built/theme.css.d.ts +9 -0
  151. package/dist/ui-common-locales/de-DE.json +60 -0
  152. package/dist/ui-common-locales/el-GR.json +60 -0
  153. package/dist/ui-common-locales/en.json +60 -0
  154. package/dist/ui-common-locales/es-ES.json +60 -0
  155. package/dist/ui-common-locales/fi-FI.json +60 -0
  156. package/dist/ui-common-locales/fr-FR.json +60 -0
  157. package/dist/ui-common-locales/id-ID.json +60 -0
  158. package/dist/ui-common-locales/it-IT.json +60 -0
  159. package/dist/ui-common-locales/ja-JP.json +60 -0
  160. package/dist/ui-common-locales/ko-KR.json +60 -0
  161. package/dist/ui-common-locales/mn-MN.json +60 -0
  162. package/dist/ui-common-locales/ms-MY.json +60 -0
  163. package/dist/ui-common-locales/pl-PL.json +60 -0
  164. package/dist/ui-common-locales/pt-BR.json +60 -0
  165. package/dist/ui-common-locales/pt-PT.json +60 -0
  166. package/dist/ui-common-locales/ru-RU.json +60 -0
  167. package/dist/ui-common-locales/th-TH.json +60 -0
  168. package/dist/ui-common-locales/tr-TR.json +60 -0
  169. package/dist/ui-common-locales/vi-VN.json +60 -0
  170. package/dist/ui-common-locales/zh-CN.json +60 -0
  171. package/dist/ui-common-locales/zh-TW.json +60 -0
  172. package/exports.customs.json +1 -0
  173. package/package.json +86 -6
@@ -1 +1 @@
1
- {"version":3,"file":"TourContext.js","names":[],"sources":["../../../src/forks/Tour/TourContext.ts"],"sourcesContent":["// Copyright (c) Meta Platforms, Inc. and affiliates.\n//\n// Forked from @astryxdesign/lab 0.6.5-canary.8701623, src/Tour/TourContext.ts\n// (MIT; see NOTICE). Unchanged: forked with TourStep, which reads it.\n// Provenance and the drift guard: src/forks/provenance.json.\n\n\"use client\";\n\n/**\n * @file TourContext.ts\n * @input Uses React createContext\n * @output Exports TourContext, TourContextValue, TourDismissSource\n * @position Internal context; provided by Tour, consumed by TourStep + useTour\n *\n * SYNC: When modified, update these files to stay in sync:\n * - /packages/lab/src/Tour/Tour.tsx\n * - /packages/lab/src/Tour/TourStep.tsx\n * - /packages/lab/src/Tour/useTour.ts\n * - /packages/lab/src/Tour/Tour.doc.mjs\n */\n\nimport { createContext } from \"react\";\n\n/**\n * Why a tour was dismissed. Lets a consumer distinguish \"finished the whole\n * tour\" from the various early exits, so it can persist \"has seen this tour\"\n * appropriately.\n * - `backdrop`: clicked the dimmed background\n * - `escape`: pressed Escape at any step\n * - `close`: pressed the step's close (X) control\n * - `skip`: chose \"skip\"/\"maybe later\" on the first step\n * - `complete`: advanced past the final step\n */\nexport type TourDismissSource = \"backdrop\" | \"escape\" | \"close\" | \"skip\" | \"complete\";\n\n/**\n * Value shared from the Tour controller to its steps. Steps register\n * themselves on mount (so the controller learns the step order from the\n * children, in document order) and read whether they are the active step.\n */\nexport interface TourContextValue {\n /** Register a step by its stable id; returns an unregister cleanup. */\n registerStep: (id: string) => () => void;\n /** The id of the step that is currently active, or null when none. */\n activeStepId: string | null;\n /** Zero-based index of the active step among registered steps. */\n activeStepIndex: number;\n /** Total number of registered steps. */\n stepCount: number;\n /** Whether the tour's step count should be shown in each step. */\n isStepCountShown: boolean;\n /** Whether a dimmed background is shown behind the active step. */\n hasBackdrop: boolean;\n /** Advance to the next step (or complete on the last step). */\n onNext: () => void;\n /** Return to the previous step (no-op on the first step). */\n onPrevious: () => void;\n /** Dismiss the tour with a reason. */\n onDismiss: (source: TourDismissSource) => void;\n}\n\nexport const TourContext = createContext<TourContextValue | null>(null);\n"],"mappings":";;;AA6DA,IAAa,IAAc,EAAuC,IAAI"}
1
+ {"version":3,"file":"TourContext.js","names":[],"sources":["../../../src/forks/Tour/TourContext.ts"],"sourcesContent":["// Copyright (c) Meta Platforms, Inc. and affiliates.\n//\n// Forked from @astryxdesign/lab 0.7.0-canary.97a0d31, src/Tour/TourContext.ts\n// (MIT; see NOTICE). Unchanged: forked with TourStep, which reads it.\n// Provenance and the drift guard: src/forks/provenance.json.\n\n\"use client\";\n\n/**\n * @file TourContext.ts\n * @input Uses React createContext\n * @output Exports TourContext, TourContextValue, TourDismissSource\n * @position Internal context; provided by Tour, consumed by TourStep + useTour\n *\n * SYNC: When modified, update these files to stay in sync:\n * - /packages/lab/src/Tour/Tour.tsx\n * - /packages/lab/src/Tour/TourStep.tsx\n * - /packages/lab/src/Tour/useTour.ts\n * - /packages/lab/src/Tour/Tour.doc.mjs\n */\n\nimport { createContext } from \"react\";\n\n/**\n * Why a tour was dismissed. Lets a consumer distinguish \"finished the whole\n * tour\" from the various early exits, so it can persist \"has seen this tour\"\n * appropriately.\n * - `backdrop`: clicked the dimmed background\n * - `escape`: pressed Escape at any step\n * - `close`: pressed the step's close (X) control\n * - `skip`: chose \"skip\"/\"maybe later\" on the first step\n * - `complete`: advanced past the final step\n */\nexport type TourDismissSource = \"backdrop\" | \"escape\" | \"close\" | \"skip\" | \"complete\";\n\n/**\n * Value shared from the Tour controller to its steps. Steps register\n * themselves on mount (so the controller learns the step order from the\n * children, in document order) and read whether they are the active step.\n */\nexport interface TourContextValue {\n /** Register a step by its stable id; returns an unregister cleanup. */\n registerStep: (id: string) => () => void;\n /** The id of the step that is currently active, or null when none. */\n activeStepId: string | null;\n /** Zero-based index of the active step among registered steps. */\n activeStepIndex: number;\n /** Total number of registered steps. */\n stepCount: number;\n /** Whether the tour's step count should be shown in each step. */\n isStepCountShown: boolean;\n /** Whether a dimmed background is shown behind the active step. */\n hasBackdrop: boolean;\n /** Advance to the next step (or complete on the last step). */\n onNext: () => void;\n /** Return to the previous step (no-op on the first step). */\n onPrevious: () => void;\n /** Dismiss the tour with a reason. */\n onDismiss: (source: TourDismissSource) => void;\n}\n\nexport const TourContext = createContext<TourContextValue | null>(null);\n"],"mappings":";;;AA6DA,IAAa,IAAc,EAAuC,IAAI"}
@@ -1 +1 @@
1
- {"version":3,"file":"TourStep.js","names":[],"sources":["../../../src/forks/Tour/TourStep.tsx"],"sourcesContent":["// Copyright (c) Meta Platforms, Inc. and affiliates.\n// Modifications copyright (c) Lablup Inc.\n//\n// Forked from @astryxdesign/lab 0.6.5-canary.8701623, src/Tour/TourStep.tsx\n// (MIT; see NOTICE). Provenance and the drift guard: src/forks/provenance.json.\n\n\"use client\";\n\n/**\n * TourStep, ui-common's copy of Astryx lab's, with one fix applied (not yet\n * upstream): the highlight overlay is promoted into the top layer exactly\n * once and never hidden and re-shown. Top-layer order is promotion order, so\n * the re-promotion React StrictMode's double-invoked effect caused moved the\n * overlay ABOVE the callout and painted the spotlight dim over it. Detaching\n * the node takes it out of the top layer, so no cleanup is needed.\n *\n * `Tour`, `TourContext` and `useTour` are forked unchanged with it, since the\n * step reads the controller's context. Everything else is upstream's. Its\n * style namespace is Astryx's compiled output (src/forks/compiled.ts).\n *\n * Delete this fork, and its exports.exclude.json entry, once lab ships the\n * fix (CONTRIBUTING, \"Forks of Astryx components\").\n */\n\n/*\n * Upstream's file notes, kept:\n *\n * A TourStep highlights a target element and renders a callout anchored to it,\n * with a heading, body, optional step progress (\"2 of 5\"), and back / next /\n * close controls. It registers with the parent `<Tour>` on mount (so step\n * order follows the children) and only renders its callout while it is the\n * active step. Anchoring + the callout surface reuse the core `Popover`\n * (`anchorRef` → the step's target), so positioning, top-layer rendering, and\n * dismiss semantics come from the existing layer system rather than a bespoke\n * implementation.\n *\n * The highlight is drawn as a separate overlay tracking the target's box — the\n * consumer's element is never restyled, so there is no cascade fight with the\n * target's own styles. That overlay is promoted into the browser TOP LAYER\n * (via the popover API, like the rest of the layer system) so it sits above\n * page content without any hardcoded z-index; the callout is promoted after\n * it, so the callout stays above the highlight. Because it is promoted in\n * place (not portaled out of the tree), it stays inside the consumer's Theme\n * subtree and inherits theme tokens — including a scoped/nested theme's accent\n * for the ring. Dimming is an opt-in spotlight cutout (dims around the target,\n * not over it) rather than a flat scrim.\n */\n\nimport {\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { Popover } from \"@astryxdesign/core/Popover\";\nimport type { LayerAlignment, LayerPlacement } from \"@astryxdesign/core/Layer\";\nimport { Button } from \"@astryxdesign/core/Button\";\nimport { Text } from \"@astryxdesign/core/Text\";\nimport { Heading } from \"@astryxdesign/core/Heading\";\nimport { VStack, HStack } from \"@astryxdesign/core/Layout\";\n\nimport { compiledStyles } from \"../compiled\";\nimport * as compiled from \"./TourStep.styles\";\nimport { TourContext } from \"./TourContext\";\n\n// Client-only layout effect (SSR renders no overlay, so this only runs on the\n// client). Kept local since core does not export its isomorphic variant.\nconst useClientLayoutEffect =\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\n// Gap between the target's edge and the highlight ring, in px.\nconst HIGHLIGHT_PADDING = 4;\n\ninterface TargetRect {\n top: number;\n left: number;\n width: number;\n height: number;\n radius: string;\n}\n\n// @astryxdesign/lab dist/Tour/TourStep.js `styles`.\nconst styles = compiledStyles(compiled.styles);\n\n// Upstream's `overlayRoot`/`overlayInteractive`, `highlight`/`cutout`/`hidden`\n// and `content` styles, which its compiler folded into these class lists\n// (dist/Tour/TourStep.js).\nconst OVERLAY_CLASS_NAME = {\n coachmark:\n \"xixxii4 x10a8y8t x1ghz6dp x1717udv xc342km xng3xce xjbqb8w x1rea2x4 x47corl\",\n backdrop:\n \"xixxii4 x10a8y8t x1ghz6dp x1717udv xc342km xng3xce xjbqb8w x1rea2x4 x67bb7w\",\n};\nfunction highlightClassName(hasBackdrop: boolean, isHidden: boolean): string {\n if (hasBackdrop) {\n return isHidden\n ? \"x10l6tqk x47corl x1gfj591 xuedmi6 xlr8y92 xefcaua xg01cxk\"\n : \"x10l6tqk x47corl x1gfj591 xuedmi6 xlr8y92 xefcaua\";\n }\n return isHidden\n ? \"x10l6tqk x47corl xr5mita x1gfj591 xuedmi6 xlr8y92 xg01cxk\"\n : \"x10l6tqk x47corl xr5mita x1gfj591 xuedmi6 xlr8y92\";\n}\nconst CONTENT_CLASS_NAME = \"x78zum5 xdt5ytf xjcht0a x1va8c73\";\n\nconst calloutGapStyles = {\n below: styles.calloutGapBelow,\n above: styles.calloutGapAbove,\n start: styles.calloutGapStart,\n end: styles.calloutGapEnd,\n} as const;\n\n/**\n * The highlight overlay: a top-layer box sized to the target, plus an optional\n * spotlight-cutout dim. Rendered inline (not portaled) so it stays inside the\n * consumer's Theme subtree and inherits theme tokens — the popover API promotes\n * it into the top layer in place. Rendered before the callout so the callout\n * promotes on top of it; promoted once (never re-promoted) so that ordering\n * holds across re-measures.\n */\nfunction TourHighlight({\n rect,\n hasBackdrop,\n onBackdropClick,\n}: {\n rect: TargetRect | null;\n hasBackdrop: boolean;\n onBackdropClick: () => void;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n\n useClientLayoutEffect(() => {\n const el = ref.current;\n if (el == null || typeof el.showPopover !== \"function\") {\n return;\n }\n // ui-common: promote exactly once, and never hide-then-reshow: top-layer\n // order is promotion order, so a re-promotion (React StrictMode's dev\n // double-invoke of this effect) would move the overlay ABOVE the callout\n // and paint the spotlight dim over it. Detaching the node drops it from\n // the top layer.\n if (!el.matches(\":popover-open\")) {\n el.showPopover();\n }\n }, []);\n\n return (\n <div\n ref={ref}\n popover=\"manual\"\n data-testid={hasBackdrop ? \"tour-backdrop\" : undefined}\n aria-hidden=\"true\"\n onClick={hasBackdrop ? onBackdropClick : undefined}\n className={\n hasBackdrop ? OVERLAY_CLASS_NAME.backdrop : OVERLAY_CLASS_NAME.coachmark\n }\n >\n <div\n data-testid=\"tour-highlight\"\n className={highlightClassName(hasBackdrop, rect == null)}\n style={\n rect != null\n ? {\n top: rect.top - HIGHLIGHT_PADDING,\n left: rect.left - HIGHLIGHT_PADDING,\n width: rect.width + HIGHLIGHT_PADDING * 2,\n height: rect.height + HIGHLIGHT_PADDING * 2,\n borderRadius: rect.radius,\n }\n : undefined\n }\n />\n </div>\n );\n}\n\nexport interface TourStepProps {\n /**\n * Ref to the element this step points at. The callout anchors to it (like a\n * Popover trigger); it must be a `<button>` or `[role=\"button\"]` element,\n * matching Popover's `anchorRef` contract. Accepts a ref to any HTMLElement\n * subtype (e.g. `useRef<HTMLButtonElement>(null)`).\n */\n targetRef: React.RefObject<HTMLElement | null>;\n /** Step heading. */\n heading: ReactNode;\n /** Step body content. */\n children?: ReactNode;\n /**\n * Which side of the target the callout sits on.\n * @default 'below'\n */\n placement?: LayerPlacement;\n /**\n * How the callout aligns along the placement side — e.g. with `placement=\"below\"`,\n * `start` left-aligns it under the target, `center` centers it, `end` right-aligns it.\n * @default 'start'\n */\n alignment?: LayerAlignment;\n /** Test id applied to the callout content. */\n \"data-testid\"?: string;\n}\n\n/**\n * A single spotlight step within a `<Tour>`. Renders its callout only while\n * active.\n *\n * @example\n * ```\n * <TourStep targetRef={saveRef} heading=\"Save your work\">\n * Changes save automatically.\n * </TourStep>\n * ```\n */\nexport function TourStep({\n targetRef,\n heading,\n children,\n placement = \"below\",\n alignment = \"start\",\n \"data-testid\": testId,\n}: TourStepProps) {\n const tour = useContext(TourContext);\n const id = useId();\n const isActiveStep = tour != null && tour.activeStepId === id;\n\n // The active target's viewport box, tracked so the highlight overlay can sit\n // exactly over it. null until measured (or when inactive).\n const [rect, setRect] = useState<TargetRect | null>(null);\n\n // Register with the controller on mount so the tour learns this step (and\n // its position among siblings). Unregister on unmount.\n useEffect(() => {\n if (tour == null) {\n return;\n }\n return tour.registerStep(id);\n }, [tour, id]);\n\n // Track the target's box while this step is active. Re-measure on\n // scroll/resize so the highlight stays glued to the target.\n useEffect(() => {\n const el = targetRef.current;\n if (el == null || !isActiveStep) {\n setRect(null);\n return;\n }\n const measure = () => {\n const box = el.getBoundingClientRect();\n setRect({\n top: box.top,\n left: box.left,\n width: box.width,\n height: box.height,\n radius: getComputedStyle(el).borderRadius || \"0px\",\n });\n };\n measure();\n window.addEventListener(\"scroll\", measure, true);\n window.addEventListener(\"resize\", measure);\n return () => {\n window.removeEventListener(\"scroll\", measure, true);\n window.removeEventListener(\"resize\", measure);\n setRect(null);\n };\n }, [targetRef, isActiveStep]);\n\n // Outside a <Tour>, or when this isn't the active step, render nothing.\n if (tour == null || !isActiveStep) {\n return null;\n }\n\n const {\n activeStepIndex,\n stepCount,\n isStepCountShown,\n hasBackdrop,\n onNext,\n onPrevious,\n onDismiss,\n } = tour;\n\n const isFirstStep = activeStepIndex <= 0;\n const isLastStep = stepCount > 0 && activeStepIndex === stepCount - 1;\n\n const content = (\n <div className={CONTENT_CLASS_NAME} data-testid={testId}>\n <VStack gap={1}>\n <Heading level={4}>{heading}</Heading>\n {children != null && <Text type=\"body\">{children}</Text>}\n </VStack>\n <HStack gap={2} xstyle={styles.footer}>\n {isStepCountShown && stepCount > 0 ? (\n <Text type=\"supporting\" color=\"secondary\">\n {`${activeStepIndex + 1} of ${stepCount}`}\n </Text>\n ) : (\n <span />\n )}\n <HStack gap={2}>\n {!isFirstStep && (\n <Button variant=\"ghost\" size=\"sm\" label=\"Back\" onClick={onPrevious} />\n )}\n <Button\n variant=\"primary\"\n size=\"sm\"\n label={isLastStep ? \"Done\" : \"Next\"}\n onClick={onNext}\n />\n </HStack>\n </HStack>\n </div>\n );\n\n return (\n <>\n {/* Rendered before the callout so the callout promotes above it in the\n top layer (callout > highlight > page). */}\n <TourHighlight\n rect={rect}\n hasBackdrop={hasBackdrop}\n onBackdropClick={() => onDismiss(\"backdrop\")}\n />\n <Popover\n // Popover types anchorRef as RefObject<HTMLElement>; TourStep accepts a\n // nullable ref for ergonomics (useRef<HTMLButtonElement>(null)). Popover\n // guards a null `.current` internally, so this widening is safe.\n anchorRef={targetRef as React.RefObject<HTMLElement>}\n isOpen\n onOpenChange={(open) => {\n // Popover reports close from light-dismiss (backdrop) or Escape.\n // Route it to the tour as a dismissal so the whole tour ends, not\n // just this step's popover. Escape and outside-click both surface\n // here.\n if (!open) {\n onDismiss(\"close\");\n }\n }}\n placement={placement}\n alignment={alignment}\n // Size the callout to its content instead of matching the target's\n // width (Popover's default minWidth: anchor-size(width) makes it span a\n // wide target); the content's own maxWidth caps it.\n width=\"fit-content\"\n // Push the callout clear of the highlight ring so the ring is never\n // covered (placement-aware; adds to Popover's own anchor gap).\n xstyle={calloutGapStyles[placement]}\n label={typeof heading === \"string\" ? heading : \"Tour step\"}\n hasCloseButton\n closeButtonLabel=\"Close tour\"\n content={content}\n />\n </>\n );\n}\n\nTourStep.displayName = \"TourStep\";\n"],"mappings":";;;;;;;;;;;;AAsEA,IAAM,IACJ,OAAO,SAAW,MAAc,IAAkB,GAG9C,IAAoB,GAWpB,IAAS,EAAe,CAAe,GAKvC,IAAqB;CACzB,WACE;CACF,UACE;AACJ;AACA,SAAS,EAAmB,GAAsB,GAA2B;CAM3E,OALI,IACK,IACH,8DACA,sDAEC,IACH,8DACA;AACN;AACA,IAAM,IAAqB,oCAErB,IAAmB;CACvB,OAAO,EAAO;CACd,OAAO,EAAO;CACd,OAAO,EAAO;CACd,KAAK,EAAO;AACd;AAUA,SAAS,EAAc,EACrB,SACA,gBACA,sBAKC;CACD,IAAM,IAAM,EAAuB,IAAI;CAiBvC,OAfA,QAA4B;EAC1B,IAAM,IAAK,EAAI;EACX,KAAM,QAAQ,OAAO,EAAG,eAAgB,eAQvC,EAAG,QAAQ,eAAe,KAC7B,EAAG,YAAY;CAEnB,GAAG,CAAC,CAAC,GAGH,kBAAC,OAAD;EACO;EACL,SAAQ;EACR,eAAa,IAAc,kBAAkB,KAAA;EAC7C,eAAY;EACZ,SAAS,IAAc,IAAkB,KAAA;EACzC,WACE,IAAc,EAAmB,WAAW,EAAmB;EAGjE,UAAA,kBAAC,OAAD;GACE,eAAY;GACZ,WAAW,EAAmB,GAAa,KAAQ,IAAI;GACvD,OACE,KAAQ,OAQJ,KAAA,IAPA;IACE,KAAK,EAAK,MAAM;IAChB,MAAM,EAAK,OAAO;IAClB,OAAO,EAAK,QAAQ;IACpB,QAAQ,EAAK,SAAS;IACtB,cAAc,EAAK;GACrB;EAGP,CAAA;CACE,CAAA;AAET;AAwCA,SAAgB,EAAS,EACvB,cACA,YACA,aACA,eAAY,SACZ,eAAY,SACZ,eAAe,KACC;CAChB,IAAM,IAAO,EAAW,CAAW,GAC7B,IAAK,EAAM,GACX,IAAe,KAAQ,QAAQ,EAAK,iBAAiB,GAIrD,CAAC,GAAM,KAAW,EAA4B,IAAI;CAwCxD,IApCA,QAAgB;EACV,SAAQ,MAGZ,OAAO,EAAK,aAAa,CAAE;CAC7B,GAAG,CAAC,GAAM,CAAE,CAAC,GAIb,QAAgB;EACd,IAAM,IAAK,EAAU;EACrB,IAAI,KAAM,QAAQ,CAAC,GAAc;GAC/B,EAAQ,IAAI;GACZ;EACF;EACA,IAAM,UAAgB;GACpB,IAAM,IAAM,EAAG,sBAAsB;GACrC,EAAQ;IACN,KAAK,EAAI;IACT,MAAM,EAAI;IACV,OAAO,EAAI;IACX,QAAQ,EAAI;IACZ,QAAQ,iBAAiB,CAAE,CAAC,CAAC,gBAAgB;GAC/C,CAAC;EACH;EAIA,OAHA,EAAQ,GACR,OAAO,iBAAiB,UAAU,GAAS,EAAI,GAC/C,OAAO,iBAAiB,UAAU,CAAO,SAC5B;GAGX,AAFA,OAAO,oBAAoB,UAAU,GAAS,EAAI,GAClD,OAAO,oBAAoB,UAAU,CAAO,GAC5C,EAAQ,IAAI;EACd;CACF,GAAG,CAAC,GAAW,CAAY,CAAC,GAGxB,KAAQ,QAAQ,CAAC,GACnB,OAAO;CAGT,IAAM,EACJ,oBACA,cACA,qBACA,gBACA,WACA,eACA,iBACE,GAEE,IAAc,KAAmB,GACjC,IAAa,IAAY,KAAK,MAAoB,IAAY,GAE9D,IACJ,kBAAC,OAAD;EAAK,WAAW;EAAoB,eAAa;EAAjD,UAAA,CACE,kBAAC,GAAD;GAAQ,KAAK;GAAb,UAAA,CACE,kBAAC,GAAD;IAAS,OAAO;IAAI,UAAA;GAAiB,CAAA,GACpC,KAAY,QAAQ,kBAAC,GAAD;IAAM,MAAK;IAAQ;GAAe,CAAA,CACjD;EACR,CAAA,GAAA,kBAAC,GAAD;GAAQ,KAAK;GAAG,QAAQ,EAAO;GAA/B,UAAA,CACG,KAAoB,IAAY,IAC/B,kBAAC,GAAD;IAAM,MAAK;IAAa,OAAM;IAC3B,UAAA,GAAG,IAAkB,EAAE,MAAM;GAC1B,CAAA,IAEN,kBAAC,QAAD,CAAO,CAAA,GAET,kBAAC,GAAD;IAAQ,KAAK;IAAb,UAAA,CACG,CAAC,KACA,kBAAC,GAAD;KAAQ,SAAQ;KAAQ,MAAK;KAAK,OAAM;KAAO,SAAS;IAAa,CAAA,GAEvE,kBAAC,GAAD;KACE,SAAQ;KACR,MAAK;KACL,OAAO,IAAa,SAAS;KAC7B,SAAS;IACV,CAAA,CACK;GACF,CAAA,CAAA;EACL,CAAA,CAAA;;CAGP,OACE,kBAAA,GAAA,EAAA,UAAA,CAGE,kBAAC,GAAD;EACQ;EACO;EACb,uBAAuB,EAAU,UAAU;CAC5C,CAAA,GACD,kBAAC,GAAD;EAIE,WAAW;EACX,QAAA;EACA,eAAe,MAAS;GAKtB,AAAK,KACH,EAAU,OAAO;EAErB;EACW;EACA;EAIX,OAAM;EAGN,QAAQ,EAAiB;EACzB,OAAO,OAAO,KAAY,WAAW,IAAU;EAC/C,gBAAA;EACA,kBAAiB;EACR;CACV,CAAA,CACD,EAAA,CAAA;AAEN;AAEA,EAAS,cAAc"}
1
+ {"version":3,"file":"TourStep.js","names":[],"sources":["../../../src/forks/Tour/TourStep.tsx"],"sourcesContent":["// Copyright (c) Meta Platforms, Inc. and affiliates.\n// Modifications copyright (c) Lablup Inc.\n//\n// Forked from @astryxdesign/lab 0.7.0-canary.97a0d31, src/Tour/TourStep.tsx\n// (MIT; see NOTICE). Provenance and the drift guard: src/forks/provenance.json.\n\n\"use client\";\n\n/**\n * TourStep, ui-common's copy of Astryx lab's, with one fix applied (not yet\n * upstream): the highlight overlay is promoted into the top layer exactly\n * once and never hidden and re-shown. Top-layer order is promotion order, so\n * the re-promotion React StrictMode's double-invoked effect caused moved the\n * overlay ABOVE the callout and painted the spotlight dim over it. Detaching\n * the node takes it out of the top layer, so no cleanup is needed.\n *\n * `Tour`, `TourContext` and `useTour` are forked unchanged with it, since the\n * step reads the controller's context. Everything else is upstream's. Its\n * style namespace is Astryx's compiled output (src/forks/compiled.ts).\n *\n * Delete this fork, and its exports.exclude.json entry, once lab ships the\n * fix (CONTRIBUTING, \"Forks of Astryx components\").\n */\n\n/*\n * Upstream's file notes, kept:\n *\n * A TourStep highlights a target element and renders a callout anchored to it,\n * with a heading, body, optional step progress (\"2 of 5\"), and back / next /\n * close controls. It registers with the parent `<Tour>` on mount (so step\n * order follows the children) and only renders its callout while it is the\n * active step. Anchoring + the callout surface reuse the core `Popover`\n * (`anchorRef` → the step's target), so positioning, top-layer rendering, and\n * dismiss semantics come from the existing layer system rather than a bespoke\n * implementation.\n *\n * The highlight is drawn as a separate overlay tracking the target's box — the\n * consumer's element is never restyled, so there is no cascade fight with the\n * target's own styles. That overlay is promoted into the browser TOP LAYER\n * (via the popover API, like the rest of the layer system) so it sits above\n * page content without any hardcoded z-index; the callout is promoted after\n * it, so the callout stays above the highlight. Because it is promoted in\n * place (not portaled out of the tree), it stays inside the consumer's Theme\n * subtree and inherits theme tokens — including a scoped/nested theme's accent\n * for the ring. Dimming is an opt-in spotlight cutout (dims around the target,\n * not over it) rather than a flat scrim.\n */\n\nimport {\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { Popover } from \"@astryxdesign/core/Popover\";\nimport type { LayerAlignment, LayerPlacement } from \"@astryxdesign/core/Layer\";\nimport { Button } from \"@astryxdesign/core/Button\";\nimport { Text } from \"@astryxdesign/core/Text\";\nimport { Heading } from \"@astryxdesign/core/Heading\";\nimport { VStack, HStack } from \"@astryxdesign/core/Layout\";\n\nimport { compiledStyles } from \"../compiled\";\nimport * as compiled from \"./TourStep.styles\";\nimport { TourContext } from \"./TourContext\";\n\n// Client-only layout effect (SSR renders no overlay, so this only runs on the\n// client). Kept local since core does not export its isomorphic variant.\nconst useClientLayoutEffect =\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\n// Gap between the target's edge and the highlight ring, in px.\nconst HIGHLIGHT_PADDING = 4;\n\ninterface TargetRect {\n top: number;\n left: number;\n width: number;\n height: number;\n radius: string;\n}\n\n// @astryxdesign/lab dist/Tour/TourStep.js `styles`.\nconst styles = compiledStyles(compiled.styles);\n\n// Upstream's `overlayRoot`/`overlayInteractive`, `highlight`/`cutout`/`hidden`\n// and `content` styles, which its compiler folded into these class lists\n// (dist/Tour/TourStep.js).\nconst OVERLAY_CLASS_NAME = {\n coachmark:\n \"xixxii4 x10a8y8t x1ghz6dp x1717udv xc342km xng3xce xjbqb8w x1rea2x4 x47corl\",\n backdrop:\n \"xixxii4 x10a8y8t x1ghz6dp x1717udv xc342km xng3xce xjbqb8w x1rea2x4 x67bb7w\",\n};\nfunction highlightClassName(hasBackdrop: boolean, isHidden: boolean): string {\n if (hasBackdrop) {\n return isHidden\n ? \"x10l6tqk x47corl x1gfj591 xuedmi6 xlr8y92 xefcaua xg01cxk\"\n : \"x10l6tqk x47corl x1gfj591 xuedmi6 xlr8y92 xefcaua\";\n }\n return isHidden\n ? \"x10l6tqk x47corl xr5mita x1gfj591 xuedmi6 xlr8y92 xg01cxk\"\n : \"x10l6tqk x47corl xr5mita x1gfj591 xuedmi6 xlr8y92\";\n}\nconst CONTENT_CLASS_NAME = \"x78zum5 xdt5ytf xjcht0a x1va8c73\";\n\nconst calloutGapStyles = {\n below: styles.calloutGapBelow,\n above: styles.calloutGapAbove,\n start: styles.calloutGapStart,\n end: styles.calloutGapEnd,\n} as const;\n\n/**\n * The highlight overlay: a top-layer box sized to the target, plus an optional\n * spotlight-cutout dim. Rendered inline (not portaled) so it stays inside the\n * consumer's Theme subtree and inherits theme tokens — the popover API promotes\n * it into the top layer in place. Rendered before the callout so the callout\n * promotes on top of it; promoted once (never re-promoted) so that ordering\n * holds across re-measures.\n */\nfunction TourHighlight({\n rect,\n hasBackdrop,\n onBackdropClick,\n}: {\n rect: TargetRect | null;\n hasBackdrop: boolean;\n onBackdropClick: () => void;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n\n useClientLayoutEffect(() => {\n const el = ref.current;\n if (el == null || typeof el.showPopover !== \"function\") {\n return;\n }\n // ui-common: promote exactly once, and never hide-then-reshow: top-layer\n // order is promotion order, so a re-promotion (React StrictMode's dev\n // double-invoke of this effect) would move the overlay ABOVE the callout\n // and paint the spotlight dim over it. Detaching the node drops it from\n // the top layer.\n if (!el.matches(\":popover-open\")) {\n el.showPopover();\n }\n }, []);\n\n return (\n <div\n ref={ref}\n popover=\"manual\"\n data-testid={hasBackdrop ? \"tour-backdrop\" : undefined}\n aria-hidden=\"true\"\n onClick={hasBackdrop ? onBackdropClick : undefined}\n className={\n hasBackdrop ? OVERLAY_CLASS_NAME.backdrop : OVERLAY_CLASS_NAME.coachmark\n }\n >\n <div\n data-testid=\"tour-highlight\"\n className={highlightClassName(hasBackdrop, rect == null)}\n style={\n rect != null\n ? {\n top: rect.top - HIGHLIGHT_PADDING,\n left: rect.left - HIGHLIGHT_PADDING,\n width: rect.width + HIGHLIGHT_PADDING * 2,\n height: rect.height + HIGHLIGHT_PADDING * 2,\n borderRadius: rect.radius,\n }\n : undefined\n }\n />\n </div>\n );\n}\n\nexport interface TourStepProps {\n /**\n * Ref to the element this step points at. The callout anchors to it (like a\n * Popover trigger); it must be a `<button>` or `[role=\"button\"]` element,\n * matching Popover's `anchorRef` contract. Accepts a ref to any HTMLElement\n * subtype (e.g. `useRef<HTMLButtonElement>(null)`).\n */\n targetRef: React.RefObject<HTMLElement | null>;\n /** Step heading. */\n heading: ReactNode;\n /** Step body content. */\n children?: ReactNode;\n /**\n * Which side of the target the callout sits on.\n * @default 'below'\n */\n placement?: LayerPlacement;\n /**\n * How the callout aligns along the placement side — e.g. with `placement=\"below\"`,\n * `start` left-aligns it under the target, `center` centers it, `end` right-aligns it.\n * @default 'start'\n */\n alignment?: LayerAlignment;\n /** Test id applied to the callout content. */\n \"data-testid\"?: string;\n}\n\n/**\n * A single spotlight step within a `<Tour>`. Renders its callout only while\n * active.\n *\n * @example\n * ```\n * <TourStep targetRef={saveRef} heading=\"Save your work\">\n * Changes save automatically.\n * </TourStep>\n * ```\n */\nexport function TourStep({\n targetRef,\n heading,\n children,\n placement = \"below\",\n alignment = \"start\",\n \"data-testid\": testId,\n}: TourStepProps) {\n const tour = useContext(TourContext);\n const id = useId();\n const isActiveStep = tour != null && tour.activeStepId === id;\n\n // The active target's viewport box, tracked so the highlight overlay can sit\n // exactly over it. null until measured (or when inactive).\n const [rect, setRect] = useState<TargetRect | null>(null);\n\n // Register with the controller on mount so the tour learns this step (and\n // its position among siblings). Unregister on unmount.\n useEffect(() => {\n if (tour == null) {\n return;\n }\n return tour.registerStep(id);\n }, [tour, id]);\n\n // Track the target's box while this step is active. Re-measure on\n // scroll/resize so the highlight stays glued to the target.\n useEffect(() => {\n const el = targetRef.current;\n if (el == null || !isActiveStep) {\n setRect(null);\n return;\n }\n const measure = () => {\n const box = el.getBoundingClientRect();\n setRect({\n top: box.top,\n left: box.left,\n width: box.width,\n height: box.height,\n radius: getComputedStyle(el).borderRadius || \"0px\",\n });\n };\n measure();\n window.addEventListener(\"scroll\", measure, true);\n window.addEventListener(\"resize\", measure);\n return () => {\n window.removeEventListener(\"scroll\", measure, true);\n window.removeEventListener(\"resize\", measure);\n setRect(null);\n };\n }, [targetRef, isActiveStep]);\n\n // Outside a <Tour>, or when this isn't the active step, render nothing.\n if (tour == null || !isActiveStep) {\n return null;\n }\n\n const {\n activeStepIndex,\n stepCount,\n isStepCountShown,\n hasBackdrop,\n onNext,\n onPrevious,\n onDismiss,\n } = tour;\n\n const isFirstStep = activeStepIndex <= 0;\n const isLastStep = stepCount > 0 && activeStepIndex === stepCount - 1;\n\n const content = (\n <div className={CONTENT_CLASS_NAME} data-testid={testId}>\n <VStack gap={1}>\n <Heading level={4}>{heading}</Heading>\n {children != null && <Text type=\"body\">{children}</Text>}\n </VStack>\n <HStack gap={2} xstyle={styles.footer}>\n {isStepCountShown && stepCount > 0 ? (\n <Text type=\"supporting\" color=\"secondary\">\n {`${activeStepIndex + 1} of ${stepCount}`}\n </Text>\n ) : (\n <span />\n )}\n <HStack gap={2}>\n {!isFirstStep && (\n <Button variant=\"ghost\" size=\"sm\" label=\"Back\" onClick={onPrevious} />\n )}\n <Button\n variant=\"primary\"\n size=\"sm\"\n label={isLastStep ? \"Done\" : \"Next\"}\n onClick={onNext}\n />\n </HStack>\n </HStack>\n </div>\n );\n\n return (\n <>\n {/* Rendered before the callout so the callout promotes above it in the\n top layer (callout > highlight > page). */}\n <TourHighlight\n rect={rect}\n hasBackdrop={hasBackdrop}\n onBackdropClick={() => onDismiss(\"backdrop\")}\n />\n <Popover\n // Popover types anchorRef as RefObject<HTMLElement>; TourStep accepts a\n // nullable ref for ergonomics (useRef<HTMLButtonElement>(null)). Popover\n // guards a null `.current` internally, so this widening is safe.\n anchorRef={targetRef as React.RefObject<HTMLElement>}\n isOpen\n onOpenChange={(open) => {\n // Popover reports close from light-dismiss (backdrop) or Escape.\n // Route it to the tour as a dismissal so the whole tour ends, not\n // just this step's popover. Escape and outside-click both surface\n // here.\n if (!open) {\n onDismiss(\"close\");\n }\n }}\n placement={placement}\n alignment={alignment}\n // Size the callout to its content instead of matching the target's\n // width (Popover's default minWidth: anchor-size(width) makes it span a\n // wide target); the content's own maxWidth caps it.\n width=\"fit-content\"\n // Push the callout clear of the highlight ring so the ring is never\n // covered (placement-aware; adds to Popover's own anchor gap).\n xstyle={calloutGapStyles[placement]}\n label={typeof heading === \"string\" ? heading : \"Tour step\"}\n hasCloseButton\n closeButtonLabel=\"Close tour\"\n content={content}\n />\n </>\n );\n}\n\nTourStep.displayName = \"TourStep\";\n"],"mappings":";;;;;;;;;;;;AAsEA,IAAM,IACJ,OAAO,SAAW,MAAc,IAAkB,GAG9C,IAAoB,GAWpB,IAAS,EAAe,CAAe,GAKvC,IAAqB;CACzB,WACE;CACF,UACE;AACJ;AACA,SAAS,EAAmB,GAAsB,GAA2B;CAM3E,OALI,IACK,IACH,8DACA,sDAEC,IACH,8DACA;AACN;AACA,IAAM,IAAqB,oCAErB,IAAmB;CACvB,OAAO,EAAO;CACd,OAAO,EAAO;CACd,OAAO,EAAO;CACd,KAAK,EAAO;AACd;AAUA,SAAS,EAAc,EACrB,SACA,gBACA,sBAKC;CACD,IAAM,IAAM,EAAuB,IAAI;CAiBvC,OAfA,QAA4B;EAC1B,IAAM,IAAK,EAAI;EACX,KAAM,QAAQ,OAAO,EAAG,eAAgB,eAQvC,EAAG,QAAQ,eAAe,KAC7B,EAAG,YAAY;CAEnB,GAAG,CAAC,CAAC,GAGH,kBAAC,OAAD;EACO;EACL,SAAQ;EACR,eAAa,IAAc,kBAAkB,KAAA;EAC7C,eAAY;EACZ,SAAS,IAAc,IAAkB,KAAA;EACzC,WACE,IAAc,EAAmB,WAAW,EAAmB;EAGjE,UAAA,kBAAC,OAAD;GACE,eAAY;GACZ,WAAW,EAAmB,GAAa,KAAQ,IAAI;GACvD,OACE,KAAQ,OAQJ,KAAA,IAPA;IACE,KAAK,EAAK,MAAM;IAChB,MAAM,EAAK,OAAO;IAClB,OAAO,EAAK,QAAQ;IACpB,QAAQ,EAAK,SAAS;IACtB,cAAc,EAAK;GACrB;EAGP,CAAA;CACE,CAAA;AAET;AAwCA,SAAgB,EAAS,EACvB,cACA,YACA,aACA,eAAY,SACZ,eAAY,SACZ,eAAe,KACC;CAChB,IAAM,IAAO,EAAW,CAAW,GAC7B,IAAK,EAAM,GACX,IAAe,KAAQ,QAAQ,EAAK,iBAAiB,GAIrD,CAAC,GAAM,KAAW,EAA4B,IAAI;CAwCxD,IApCA,QAAgB;EACV,SAAQ,MAGZ,OAAO,EAAK,aAAa,CAAE;CAC7B,GAAG,CAAC,GAAM,CAAE,CAAC,GAIb,QAAgB;EACd,IAAM,IAAK,EAAU;EACrB,IAAI,KAAM,QAAQ,CAAC,GAAc;GAC/B,EAAQ,IAAI;GACZ;EACF;EACA,IAAM,UAAgB;GACpB,IAAM,IAAM,EAAG,sBAAsB;GACrC,EAAQ;IACN,KAAK,EAAI;IACT,MAAM,EAAI;IACV,OAAO,EAAI;IACX,QAAQ,EAAI;IACZ,QAAQ,iBAAiB,CAAE,CAAC,CAAC,gBAAgB;GAC/C,CAAC;EACH;EAIA,OAHA,EAAQ,GACR,OAAO,iBAAiB,UAAU,GAAS,EAAI,GAC/C,OAAO,iBAAiB,UAAU,CAAO,SAC5B;GAGX,AAFA,OAAO,oBAAoB,UAAU,GAAS,EAAI,GAClD,OAAO,oBAAoB,UAAU,CAAO,GAC5C,EAAQ,IAAI;EACd;CACF,GAAG,CAAC,GAAW,CAAY,CAAC,GAGxB,KAAQ,QAAQ,CAAC,GACnB,OAAO;CAGT,IAAM,EACJ,oBACA,cACA,qBACA,gBACA,WACA,eACA,iBACE,GAEE,IAAc,KAAmB,GACjC,IAAa,IAAY,KAAK,MAAoB,IAAY,GAE9D,IACJ,kBAAC,OAAD;EAAK,WAAW;EAAoB,eAAa;EAAjD,UAAA,CACE,kBAAC,GAAD;GAAQ,KAAK;GAAb,UAAA,CACE,kBAAC,GAAD;IAAS,OAAO;IAAI,UAAA;GAAiB,CAAA,GACpC,KAAY,QAAQ,kBAAC,GAAD;IAAM,MAAK;IAAQ;GAAe,CAAA,CACjD;EACR,CAAA,GAAA,kBAAC,GAAD;GAAQ,KAAK;GAAG,QAAQ,EAAO;GAA/B,UAAA,CACG,KAAoB,IAAY,IAC/B,kBAAC,GAAD;IAAM,MAAK;IAAa,OAAM;IAC3B,UAAA,GAAG,IAAkB,EAAE,MAAM;GAC1B,CAAA,IAEN,kBAAC,QAAD,CAAO,CAAA,GAET,kBAAC,GAAD;IAAQ,KAAK;IAAb,UAAA,CACG,CAAC,KACA,kBAAC,GAAD;KAAQ,SAAQ;KAAQ,MAAK;KAAK,OAAM;KAAO,SAAS;IAAa,CAAA,GAEvE,kBAAC,GAAD;KACE,SAAQ;KACR,MAAK;KACL,OAAO,IAAa,SAAS;KAC7B,SAAS;IACV,CAAA,CACK;GACF,CAAA,CAAA;EACL,CAAA,CAAA;;CAGP,OACE,kBAAA,GAAA,EAAA,UAAA,CAGE,kBAAC,GAAD;EACQ;EACO;EACb,uBAAuB,EAAU,UAAU;CAC5C,CAAA,GACD,kBAAC,GAAD;EAIE,WAAW;EACX,QAAA;EACA,eAAe,MAAS;GAKtB,AAAK,KACH,EAAU,OAAO;EAErB;EACW;EACA;EAIX,OAAM;EAGN,QAAQ,EAAiB;EACzB,OAAO,OAAO,KAAY,WAAW,IAAU;EAC/C,gBAAA;EACA,kBAAiB;EACR;CACV,CAAA,CACD,EAAA,CAAA;AAEN;AAEA,EAAS,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"TourStep.styles.js","names":[],"sources":["../../../src/forks/Tour/TourStep.styles.ts"],"sourcesContent":["/* eslint-disable */\n// @ts-nocheck\n// @generated by scripts/sync-forks.mjs. Do not edit.\n//\n// Compiled StyleX from @astryxdesign/lab 0.6.5-canary.8701623, reused by the\n// Tour fork so it renders with upstream's own class names\n// (src/forks/compiled.ts). Copyright (c) Meta Platforms, Inc. and\n// affiliates; MIT, see NOTICE.\n\n// dist/Tour/TourStep.js\nexport const styles = {\n footer: {\n kGNEyG: \"x6s0dn4\",\n kjj79g: \"x1qughib\",\n $$css: true,\n },\n calloutGapBelow: {\n keoZOQ: \"xtbrsbv\",\n $$css: true,\n },\n calloutGapAbove: {\n k1K539: \"x1p37lm5\",\n $$css: true,\n },\n calloutGapStart: {\n k71WvV: \"x1pezmd8\",\n $$css: true,\n },\n calloutGapEnd: {\n keTefX: \"x1cmpsy9\",\n $$css: true,\n },\n};\n"],"mappings":";AAUA,IAAa,IAAS;CACpB,QAAQ;EACN,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,iBAAiB;EACf,QAAQ;EACR,OAAO;CACT;CACA,iBAAiB;EACf,QAAQ;EACR,OAAO;CACT;CACA,iBAAiB;EACf,QAAQ;EACR,OAAO;CACT;CACA,eAAe;EACb,QAAQ;EACR,OAAO;CACT;AACF"}
1
+ {"version":3,"file":"TourStep.styles.js","names":[],"sources":["../../../src/forks/Tour/TourStep.styles.ts"],"sourcesContent":["/* eslint-disable */\n// @ts-nocheck\n// @generated by scripts/sync-forks.mjs. Do not edit.\n//\n// Compiled StyleX from @astryxdesign/lab 0.7.0-canary.97a0d31, reused by the\n// Tour fork so it renders with upstream's own class names\n// (src/forks/compiled.ts). Copyright (c) Meta Platforms, Inc. and\n// affiliates; MIT, see NOTICE.\n\n// dist/Tour/TourStep.js\nexport const styles = {\n footer: {\n kGNEyG: \"x6s0dn4\",\n kjj79g: \"x1qughib\",\n $$css: true,\n },\n calloutGapBelow: {\n keoZOQ: \"xtbrsbv\",\n $$css: true,\n },\n calloutGapAbove: {\n k1K539: \"x1p37lm5\",\n $$css: true,\n },\n calloutGapStart: {\n k71WvV: \"x1pezmd8\",\n $$css: true,\n },\n calloutGapEnd: {\n keTefX: \"x1cmpsy9\",\n $$css: true,\n },\n};\n"],"mappings":";AAUA,IAAa,IAAS;CACpB,QAAQ;EACN,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,iBAAiB;EACf,QAAQ;EACR,OAAO;CACT;CACA,iBAAiB;EACf,QAAQ;EACR,OAAO;CACT;CACA,iBAAiB;EACf,QAAQ;EACR,OAAO;CACT;CACA,eAAe;EACb,QAAQ;EACR,OAAO;CACT;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTour.js","names":[],"sources":["../../../src/forks/Tour/useTour.ts"],"sourcesContent":["// Copyright (c) Meta Platforms, Inc. and affiliates.\n//\n// Forked from @astryxdesign/lab 0.6.5-canary.8701623, src/Tour/useTour.ts\n// (MIT; see NOTICE). Unchanged: forked with TourStep, whose context it reads.\n// Provenance and the drift guard: src/forks/provenance.json.\n\n\"use client\";\n\n/**\n * @file useTour.ts\n * @input Uses React useContext, TourContext\n * @output Exports useTour hook and UseTourReturn type\n * @position Public hook; reads the nearest Tour controller's state\n *\n * SYNC: When modified, update these files to stay in sync:\n * - /packages/lab/src/Tour/TourContext.ts\n * - /packages/lab/src/Tour/Tour.doc.mjs\n */\n\nimport { useContext } from \"react\";\nimport { TourContext, type TourDismissSource } from \"./TourContext\";\n\n/**\n * Read-only view of the active Tour's state, for custom step UIs or\n * instrumentation. Returns `null` when called outside a `<Tour>`.\n */\nexport interface UseTourReturn {\n /** Zero-based index of the active step. */\n activeStepIndex: number;\n /** Total number of registered steps. */\n stepCount: number;\n /** Whether the active step is the first one. */\n isFirstStep: boolean;\n /** Whether the active step is the last one. */\n isLastStep: boolean;\n /** Advance to the next step (or complete on the last step). */\n next: () => void;\n /** Return to the previous step. */\n previous: () => void;\n /** Dismiss the tour with a reason. */\n dismiss: (source: TourDismissSource) => void;\n}\n\n/**\n * Access the current Tour controller state. Must be used inside a `<Tour>`;\n * returns `null` otherwise so callers can guard.\n */\nexport function useTour(): UseTourReturn | null {\n const ctx = useContext(TourContext);\n if (ctx == null) {\n return null;\n }\n return {\n activeStepIndex: ctx.activeStepIndex,\n stepCount: ctx.stepCount,\n isFirstStep: ctx.activeStepIndex <= 0,\n isLastStep: ctx.stepCount > 0 && ctx.activeStepIndex === ctx.stepCount - 1,\n next: ctx.onNext,\n previous: ctx.onPrevious,\n dismiss: ctx.onDismiss,\n };\n}\n"],"mappings":";;;;AA+CA,SAAgB,IAAgC;CAC9C,IAAM,IAAM,EAAW,CAAW;CAIlC,OAHI,KAAO,OACF,OAEF;EACL,iBAAiB,EAAI;EACrB,WAAW,EAAI;EACf,aAAa,EAAI,mBAAmB;EACpC,YAAY,EAAI,YAAY,KAAK,EAAI,oBAAoB,EAAI,YAAY;EACzE,MAAM,EAAI;EACV,UAAU,EAAI;EACd,SAAS,EAAI;CACf;AACF"}
1
+ {"version":3,"file":"useTour.js","names":[],"sources":["../../../src/forks/Tour/useTour.ts"],"sourcesContent":["// Copyright (c) Meta Platforms, Inc. and affiliates.\n//\n// Forked from @astryxdesign/lab 0.7.0-canary.97a0d31, src/Tour/useTour.ts\n// (MIT; see NOTICE). Unchanged: forked with TourStep, whose context it reads.\n// Provenance and the drift guard: src/forks/provenance.json.\n\n\"use client\";\n\n/**\n * @file useTour.ts\n * @input Uses React useContext, TourContext\n * @output Exports useTour hook and UseTourReturn type\n * @position Public hook; reads the nearest Tour controller's state\n *\n * SYNC: When modified, update these files to stay in sync:\n * - /packages/lab/src/Tour/TourContext.ts\n * - /packages/lab/src/Tour/Tour.doc.mjs\n */\n\nimport { useContext } from \"react\";\nimport { TourContext, type TourDismissSource } from \"./TourContext\";\n\n/**\n * Read-only view of the active Tour's state, for custom step UIs or\n * instrumentation. Returns `null` when called outside a `<Tour>`.\n */\nexport interface UseTourReturn {\n /** Zero-based index of the active step. */\n activeStepIndex: number;\n /** Total number of registered steps. */\n stepCount: number;\n /** Whether the active step is the first one. */\n isFirstStep: boolean;\n /** Whether the active step is the last one. */\n isLastStep: boolean;\n /** Advance to the next step (or complete on the last step). */\n next: () => void;\n /** Return to the previous step. */\n previous: () => void;\n /** Dismiss the tour with a reason. */\n dismiss: (source: TourDismissSource) => void;\n}\n\n/**\n * Access the current Tour controller state. Must be used inside a `<Tour>`;\n * returns `null` otherwise so callers can guard.\n */\nexport function useTour(): UseTourReturn | null {\n const ctx = useContext(TourContext);\n if (ctx == null) {\n return null;\n }\n return {\n activeStepIndex: ctx.activeStepIndex,\n stepCount: ctx.stepCount,\n isFirstStep: ctx.activeStepIndex <= 0,\n isLastStep: ctx.stepCount > 0 && ctx.activeStepIndex === ctx.stepCount - 1,\n next: ctx.onNext,\n previous: ctx.onPrevious,\n dismiss: ctx.onDismiss,\n };\n}\n"],"mappings":";;;;AA+CA,SAAgB,IAAgC;CAC9C,IAAM,IAAM,EAAW,CAAW;CAIlC,OAHI,KAAO,OACF,OAEF;EACL,iBAAiB,EAAI;EACrB,WAAW,EAAI;EACf,aAAa,EAAI,mBAAmB;EACpC,YAAY,EAAI,YAAY,KAAK,EAAI,oBAAoB,EAAI,YAAY;EACzE,MAAM,EAAI;EACV,UAAU,EAAI;EACd,SAAS,EAAI;CACf;AACF"}
@@ -1,27 +1,28 @@
1
- import { booleanTokenMessages as e } from "../components/BooleanToken/BooleanToken.messages.js";
2
- import { bulkEditFormItemMessages as t } from "../components/BulkEditFormItem/BulkEditFormItem.messages.js";
3
- import { bulkErrorModalMessages as n } from "../components/BulkErrorModal/BulkErrorModal.messages.js";
4
- import { colorPickerMessages as r } from "../components/ColorPicker/ColorPicker.messages.js";
5
- import { dataGridMessages as i } from "../components/DataGrid/DataGrid.messages.js";
6
- import { deleteConfirmModalMessages as a } from "../components/DeleteConfirmModal/DeleteConfirmModal.messages.js";
7
- import { formMessages as o } from "../components/Form/Form.messages.js";
8
- import { notificationStackMessages as s } from "../components/NotificationStack/NotificationStack.messages.js";
9
- import { pageHeaderMessages as c } from "../components/PageHeader/PageHeader.messages.js";
10
- import { pagedSelectorMessages as l } from "../components/PagedSelector/PagedSelector.messages.js";
11
- import { selectionLabelMessages as u } from "../components/SelectionLabel/SelectionLabel.messages.js";
12
- import { skeletonMessages as d } from "../components/Skeleton/Skeleton.messages.js";
13
- import { statisticMessages as f } from "../components/Statistic/Statistic.messages.js";
14
- import { numberStepperMessages as p } from "../components/StepNumberInput/NumberStepper.messages.js";
15
- import { tokenRowMessages as m } from "../components/TokenRow/TokenRow.messages.js";
16
- import { uncontrolledInputMessages as h } from "../components/UncontrolledInput/UncontrolledInput.messages.js";
17
- import { unitGridMessages as g } from "../components/UnitGrid/UnitGrid.messages.js";
18
- import { commonMessages as _ } from "./common.messages.js";
1
+ import { boardMessages as e } from "../components/Board/Board.messages.js";
2
+ import { booleanTokenMessages as t } from "../components/BooleanToken/BooleanToken.messages.js";
3
+ import { bulkEditFormItemMessages as n } from "../components/BulkEditFormItem/BulkEditFormItem.messages.js";
4
+ import { bulkErrorModalMessages as r } from "../components/BulkErrorModal/BulkErrorModal.messages.js";
5
+ import { colorPickerMessages as i } from "../components/ColorPicker/ColorPicker.messages.js";
6
+ import { dataGridMessages as a } from "../components/DataGrid/DataGrid.messages.js";
7
+ import { deleteConfirmModalMessages as o } from "../components/DeleteConfirmModal/DeleteConfirmModal.messages.js";
8
+ import { formMessages as s } from "../components/Form/Form.messages.js";
9
+ import { notificationStackMessages as c } from "../components/NotificationStack/NotificationStack.messages.js";
10
+ import { pageHeaderMessages as l } from "../components/PageHeader/PageHeader.messages.js";
11
+ import { pagedSelectorMessages as u } from "../components/PagedSelector/PagedSelector.messages.js";
12
+ import { selectionLabelMessages as d } from "../components/SelectionLabel/SelectionLabel.messages.js";
13
+ import { skeletonMessages as f } from "../components/Skeleton/Skeleton.messages.js";
14
+ import { statisticMessages as p } from "../components/Statistic/Statistic.messages.js";
15
+ import { numberStepperMessages as m } from "../components/StepNumberInput/NumberStepper.messages.js";
16
+ import { tokenRowMessages as h } from "../components/TokenRow/TokenRow.messages.js";
17
+ import { uncontrolledInputMessages as g } from "../components/UncontrolledInput/UncontrolledInput.messages.js";
18
+ import { unitGridMessages as _ } from "../components/UnitGrid/UnitGrid.messages.js";
19
+ import { commonMessages as v } from "./common.messages.js";
19
20
  //#region src/i18n/catalog.ts
20
- function v(e) {
21
+ function y(e) {
21
22
  return e;
22
23
  }
23
- var y = {
24
- ..._,
24
+ var b = {
25
+ ...v,
25
26
  ...e,
26
27
  ...t,
27
28
  ...n,
@@ -30,17 +31,18 @@ var y = {
30
31
  ...a,
31
32
  ...o,
32
33
  ...s,
33
- ...p,
34
34
  ...c,
35
+ ...m,
35
36
  ...l,
36
37
  ...u,
37
38
  ...d,
38
39
  ...f,
39
- ...m,
40
+ ...p,
40
41
  ...h,
41
- ...g
42
+ ...g,
43
+ ..._
42
44
  };
43
45
  //#endregion
44
- export { v as defineMessages, y as uiCommonCatalog };
46
+ export { y as defineMessages, b as uiCommonCatalog };
45
47
 
46
48
  //# sourceMappingURL=catalog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","names":[],"sources":["../../src/i18n/catalog.ts"],"sourcesContent":["/**\n * ui-common's message catalog: every built-in string a custom component\n * shows, with its English text.\n *\n * English lives in code, as `defaultMessage`. Translations live in\n * `./locales/<locale>.json`, one file per Astryx locale name (`ko-KR.json`,\n * `ja-JP.json`, ...), holding the same keys. The build writes `en.json` from\n * this catalog and ships every file at\n * `@lablup/ui-common/ui-common-locales/<locale>.json`.\n *\n * Adding strings for a component:\n *\n * // src/components/Foo/Foo.messages.ts\n * export const fooMessages = defineMessages({\n * \"uic.Foo.expand\": { defaultMessage: \"Expand\", description: \"...\" },\n * });\n *\n * then spread `fooMessages` into `uiCommonCatalog` below. Generic action\n * words (OK, Cancel, Confirm, Retry, ...) are `uic.common.*` keys in\n * `./common.messages.ts`; use those instead of a key of your own. Keep message\n * files free of React and CSS imports: the build reads this catalog.\n */\nimport type { Catalog, MessageEntry } from \"@astryxdesign/core/i18n\";\n\n// These modules import `defineMessages` back from here. The cycle is safe:\n// it is a function declaration, so it is bound before either module runs.\nimport { booleanTokenMessages } from \"../components/BooleanToken/BooleanToken.messages\";\nimport { bulkEditFormItemMessages } from \"../components/BulkEditFormItem/BulkEditFormItem.messages\";\nimport { bulkErrorModalMessages } from \"../components/BulkErrorModal/BulkErrorModal.messages\";\nimport { colorPickerMessages } from \"../components/ColorPicker/ColorPicker.messages\";\nimport { dataGridMessages } from \"../components/DataGrid/DataGrid.messages\";\nimport { deleteConfirmModalMessages } from \"../components/DeleteConfirmModal/DeleteConfirmModal.messages\";\nimport { formMessages } from \"../components/Form/Form.messages\";\nimport { notificationStackMessages } from \"../components/NotificationStack/NotificationStack.messages\";\nimport { pageHeaderMessages } from \"../components/PageHeader/PageHeader.messages\";\nimport { pagedSelectorMessages } from \"../components/PagedSelector/PagedSelector.messages\";\nimport { selectionLabelMessages } from \"../components/SelectionLabel/SelectionLabel.messages\";\nimport { skeletonMessages } from \"../components/Skeleton/Skeleton.messages\";\nimport { statisticMessages } from \"../components/Statistic/Statistic.messages\";\nimport { numberStepperMessages } from \"../components/StepNumberInput/NumberStepper.messages\";\nimport { tokenRowMessages } from \"../components/TokenRow/TokenRow.messages\";\nimport { uncontrolledInputMessages } from \"../components/UncontrolledInput/UncontrolledInput.messages\";\nimport { unitGridMessages } from \"../components/UnitGrid/UnitGrid.messages\";\nimport { commonMessages } from \"./common.messages\";\n\n/**\n * A catalog key: `uic.<Component>.<key>`, or `uic.common.<key>` for a word\n * every component shares (`./common.messages.ts`).\n */\nexport type UicMessageKey = `uic.${string}.${string}`;\n\n/**\n * Type-checks a component's messages. Keys must be `uic.<Component>.<key>` or\n * `uic.common.<key>`.\n */\nexport function defineMessages<const T extends Record<UicMessageKey, MessageEntry>>(\n messages: T,\n): T {\n return messages;\n}\n\nexport const uiCommonCatalog: Catalog = {\n ...commonMessages,\n ...booleanTokenMessages,\n ...bulkEditFormItemMessages,\n ...bulkErrorModalMessages,\n ...colorPickerMessages,\n ...dataGridMessages,\n ...deleteConfirmModalMessages,\n ...formMessages,\n ...notificationStackMessages,\n ...numberStepperMessages,\n ...pageHeaderMessages,\n ...pagedSelectorMessages,\n ...selectionLabelMessages,\n ...skeletonMessages,\n ...statisticMessages,\n ...tokenRowMessages,\n ...uncontrolledInputMessages,\n ...unitGridMessages,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAuDA,SAAgB,EACd,GACG;CACH,OAAO;AACT;AAEA,IAAa,IAA2B;CACtC,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;AACL"}
1
+ {"version":3,"file":"catalog.js","names":[],"sources":["../../src/i18n/catalog.ts"],"sourcesContent":["/**\n * ui-common's message catalog: every built-in string a custom component\n * shows, with its English text.\n *\n * English lives in code, as `defaultMessage`. Translations live in\n * `./locales/<locale>.json`, one file per Astryx locale name (`ko-KR.json`,\n * `ja-JP.json`, ...), holding the same keys. The build writes `en.json` from\n * this catalog and ships every file at\n * `@lablup/ui-common/ui-common-locales/<locale>.json`.\n *\n * Adding strings for a component:\n *\n * // src/components/Foo/Foo.messages.ts\n * export const fooMessages = defineMessages({\n * \"uic.Foo.expand\": { defaultMessage: \"Expand\", description: \"...\" },\n * });\n *\n * then spread `fooMessages` into `uiCommonCatalog` below. Generic action\n * words (OK, Cancel, Confirm, Retry, ...) are `uic.common.*` keys in\n * `./common.messages.ts`; use those instead of a key of your own. Keep message\n * files free of React and CSS imports: the build reads this catalog.\n */\nimport type { Catalog, MessageEntry } from \"@astryxdesign/core/i18n\";\n\n// These modules import `defineMessages` back from here. The cycle is safe:\n// it is a function declaration, so it is bound before either module runs.\nimport { boardMessages } from \"../components/Board/Board.messages\";\nimport { booleanTokenMessages } from \"../components/BooleanToken/BooleanToken.messages\";\nimport { bulkEditFormItemMessages } from \"../components/BulkEditFormItem/BulkEditFormItem.messages\";\nimport { bulkErrorModalMessages } from \"../components/BulkErrorModal/BulkErrorModal.messages\";\nimport { colorPickerMessages } from \"../components/ColorPicker/ColorPicker.messages\";\nimport { dataGridMessages } from \"../components/DataGrid/DataGrid.messages\";\nimport { deleteConfirmModalMessages } from \"../components/DeleteConfirmModal/DeleteConfirmModal.messages\";\nimport { formMessages } from \"../components/Form/Form.messages\";\nimport { notificationStackMessages } from \"../components/NotificationStack/NotificationStack.messages\";\nimport { pageHeaderMessages } from \"../components/PageHeader/PageHeader.messages\";\nimport { pagedSelectorMessages } from \"../components/PagedSelector/PagedSelector.messages\";\nimport { selectionLabelMessages } from \"../components/SelectionLabel/SelectionLabel.messages\";\nimport { skeletonMessages } from \"../components/Skeleton/Skeleton.messages\";\nimport { statisticMessages } from \"../components/Statistic/Statistic.messages\";\nimport { numberStepperMessages } from \"../components/StepNumberInput/NumberStepper.messages\";\nimport { tokenRowMessages } from \"../components/TokenRow/TokenRow.messages\";\nimport { uncontrolledInputMessages } from \"../components/UncontrolledInput/UncontrolledInput.messages\";\nimport { unitGridMessages } from \"../components/UnitGrid/UnitGrid.messages\";\nimport { commonMessages } from \"./common.messages\";\n\n/**\n * A catalog key: `uic.<Component>.<key>`, or `uic.common.<key>` for a word\n * every component shares (`./common.messages.ts`).\n */\nexport type UicMessageKey = `uic.${string}.${string}`;\n\n/**\n * Type-checks a component's messages. Keys must be `uic.<Component>.<key>` or\n * `uic.common.<key>`.\n */\nexport function defineMessages<const T extends Record<UicMessageKey, MessageEntry>>(\n messages: T,\n): T {\n return messages;\n}\n\nexport const uiCommonCatalog: Catalog = {\n ...commonMessages,\n ...boardMessages,\n ...booleanTokenMessages,\n ...bulkEditFormItemMessages,\n ...bulkErrorModalMessages,\n ...colorPickerMessages,\n ...dataGridMessages,\n ...deleteConfirmModalMessages,\n ...formMessages,\n ...notificationStackMessages,\n ...numberStepperMessages,\n ...pageHeaderMessages,\n ...pagedSelectorMessages,\n ...selectionLabelMessages,\n ...skeletonMessages,\n ...statisticMessages,\n ...tokenRowMessages,\n ...uncontrolledInputMessages,\n ...unitGridMessages,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAwDA,SAAgB,EACd,GACG;CACH,OAAO;AACT;AAEA,IAAa,IAA2B;CACtC,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;AACL"}
@@ -24,6 +24,50 @@ var e = {
24
24
  defaultMessage: "Anwenden",
25
25
  description: "Generic label of a button that applies the changes made in a dialog"
26
26
  },
27
+ "uic.Board.dragHandle": {
28
+ defaultMessage: "Ziehgriff",
29
+ description: "Accessible name of the button at a board item's top-left corner that moves the item"
30
+ },
31
+ "uic.Board.resizeHandle": {
32
+ defaultMessage: "Größengriff",
33
+ description: "Accessible name of the button at a board item's bottom-right corner that resizes the item"
34
+ },
35
+ "uic.Board.moveStarted": {
36
+ defaultMessage: "Wird gezogen.",
37
+ description: "Screen reader announcement when a board item is picked up to be moved"
38
+ },
39
+ "uic.Board.resizeStarted": {
40
+ defaultMessage: "Größe wird geändert.",
41
+ description: "Screen reader announcement when a board item starts being resized"
42
+ },
43
+ "uic.Board.itemMoved": {
44
+ defaultMessage: "Element in Spalte {column}, Zeile {row} verschoben.",
45
+ description: "Screen reader announcement while a board item moves. {column} and {row} are 1-based"
46
+ },
47
+ "uic.Board.itemResized": {
48
+ defaultMessage: "Elementgröße auf {columns} Spalten mal {rows} Zeilen geändert.",
49
+ description: "Screen reader announcement while a board item is resized"
50
+ },
51
+ "uic.Board.moveCommitted": {
52
+ defaultMessage: "Verschieben übernommen.",
53
+ description: "Screen reader announcement when a board item is dropped in its new place"
54
+ },
55
+ "uic.Board.resizeCommitted": {
56
+ defaultMessage: "Größenänderung übernommen.",
57
+ description: "Screen reader announcement when a board item's new size is applied"
58
+ },
59
+ "uic.Board.moveDiscarded": {
60
+ defaultMessage: "Verschieben verworfen.",
61
+ description: "Screen reader announcement when moving a board item is cancelled"
62
+ },
63
+ "uic.Board.resizeDiscarded": {
64
+ defaultMessage: "Größenänderung verworfen.",
65
+ description: "Screen reader announcement when resizing a board item is cancelled"
66
+ },
67
+ "uic.Board.itemRemoved": {
68
+ defaultMessage: "Element entfernt.",
69
+ description: "Screen reader announcement when a board item is removed"
70
+ },
27
71
  "uic.ColorPicker.label": {
28
72
  defaultMessage: "Farbe auswählen",
29
73
  description: "Accessible name of a color picker whose caller gave it no label"
@@ -323,6 +367,22 @@ var e = {
323
367
  "uic.PagedSelector.totalItems": {
324
368
  defaultMessage: "Total {total} Elemente",
325
369
  description: "Foot of a selector's option list; {total} is how many options exist in all pages"
370
+ },
371
+ "uic.Board.directionUp": {
372
+ defaultMessage: "Nach oben",
373
+ description: "Accessible name of the button that moves an activated board item, or shrinks a resized one, one row up"
374
+ },
375
+ "uic.Board.directionDown": {
376
+ defaultMessage: "Nach unten",
377
+ description: "Accessible name of the button that moves an activated board item, or grows a resized one, one row down"
378
+ },
379
+ "uic.Board.directionLeft": {
380
+ defaultMessage: "Nach links",
381
+ description: "Accessible name of the button that moves an activated board item, or shrinks a resized one, one column left"
382
+ },
383
+ "uic.Board.directionRight": {
384
+ defaultMessage: "Nach rechts",
385
+ description: "Accessible name of the button that moves an activated board item, or grows a resized one, one column right"
326
386
  }
327
387
  };
328
388
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"de-DE.js","names":[],"sources":["../../../src/i18n/locales/de-DE.json"],"sourcesContent":["{\n \"uic.common.ok\": {\n \"defaultMessage\": \"OK\",\n \"description\": \"Generic label of a primary action button that accepts\"\n },\n \"uic.common.cancel\": {\n \"defaultMessage\": \"Abbrechen\",\n \"description\": \"Generic label of a button that backs out of an action or stops a task\"\n },\n \"uic.common.confirm\": {\n \"defaultMessage\": \"Bestätigen\",\n \"description\": \"Generic label of a button that confirms an action\"\n },\n \"uic.common.delete\": {\n \"defaultMessage\": \"Löschen\",\n \"description\": \"Generic label of a button that deletes something\"\n },\n \"uic.common.retry\": {\n \"defaultMessage\": \"Wiederholen\",\n \"description\": \"Generic label of a button that retries a failed action or load\"\n },\n \"uic.common.apply\": {\n \"defaultMessage\": \"Anwenden\",\n \"description\": \"Generic label of a button that applies the changes made in a dialog\"\n },\n \"uic.ColorPicker.label\": {\n \"defaultMessage\": \"Farbe auswählen\",\n \"description\": \"Accessible name of a color picker whose caller gave it no label\"\n },\n \"uic.ColorPicker.hexValue\": {\n \"defaultMessage\": \"Hex-Wert\",\n \"description\": \"Hidden label of the color picker's text field for a #rrggbb value\"\n },\n \"uic.ColorPicker.clear\": {\n \"defaultMessage\": \"Löschen\",\n \"description\": \"Button in a color picker that removes the chosen color\"\n },\n \"uic.ColorPicker.noColor\": {\n \"defaultMessage\": \"Keine Farbe\",\n \"description\": \"Shown on a color picker's trigger when no color is set\"\n },\n \"uic.DeleteConfirmModal.title\": {\n \"defaultMessage\": \"Löschen\",\n \"description\": \"Title of the dialog that confirms deleting one item\"\n },\n \"uic.DeleteConfirmModal.titleMany\": {\n \"defaultMessage\": \"{count, plural, other {# Elemente löschen}}\",\n \"description\": \"Title of the dialog that confirms deleting several items; {count} is how many\"\n },\n \"uic.DeleteConfirmModal.description\": {\n \"defaultMessage\": \"Sind Sie sicher, dass Sie löschen möchten?\",\n \"description\": \"Question above the list of items about to be deleted\"\n },\n \"uic.DeleteConfirmModal.targetDescription\": {\n \"defaultMessage\": \"Möchten Sie {target} wirklich dauerhaft löschen?\",\n \"description\": \"Question above the list of items about to be deleted; {target} names the kind of item, e.g. Project\"\n },\n \"uic.DeleteConfirmModal.typeToConfirm\": {\n \"defaultMessage\": \"Geben Sie {confirmText} ein, um zu bestätigen.\",\n \"description\": \"Instruction above the confirmation field; {confirmText} is the text to type, shown as a token\"\n },\n \"uic.DeleteConfirmModal.confirmText\": {\n \"defaultMessage\": \"Löschen\",\n \"description\": \"The word the user types to confirm deleting several items at once\"\n },\n \"uic.DeleteConfirmModal.cannotBeUndone\": {\n \"defaultMessage\": \"Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"description\": \"Warning that the deletion is permanent\"\n },\n \"uic.NumberStepper.increase\": {\n \"defaultMessage\": \"Erhöhen\",\n \"description\": \"Accessible name of the button that steps a number field up\"\n },\n \"uic.NumberStepper.decrease\": {\n \"defaultMessage\": \"Verringern\",\n \"description\": \"Accessible name of the button that steps a number field down\"\n },\n \"uic.SelectionLabel.selectedCount\": {\n \"defaultMessage\": \"{count} ausgewählt\",\n \"description\": \"How many items are selected, e.g. rows of a table; {count} is the number\"\n },\n \"uic.SelectionLabel.clear\": {\n \"defaultMessage\": \"Alle abwählen\",\n \"description\": \"Button that clears the whole selection\"\n },\n \"uic.SkeletonCard.loading\": {\n \"defaultMessage\": \"Wird geladen\",\n \"description\": \"Accessible name of a card-shaped loading placeholder\"\n },\n \"uic.SkeletonRow.loading\": {\n \"defaultMessage\": \"Wird geladen\",\n \"description\": \"Accessible name of one list-row loading placeholder\"\n },\n \"uic.SkeletonText.loading\": {\n \"defaultMessage\": \"Wird geladen\",\n \"description\": \"Accessible name of a text-block loading placeholder\"\n },\n \"uic.Statistic.unlimited\": {\n \"defaultMessage\": \"Unbegrenzt\",\n \"description\": \"Shown in place of a metric's value when the value has no limit\"\n },\n \"uic.TokenRow.more\": {\n \"defaultMessage\": \"und {count} weitere\",\n \"description\": \"After a row of tokens cut short, how many were left out; {count} is the number\"\n },\n \"uic.UncontrolledInput.label\": {\n \"defaultMessage\": \"Auswählen\",\n \"description\": \"Hidden accessible name of an input whose caller gave it no label of its own\"\n },\n \"uic.UnitGrid.label\": {\n \"defaultMessage\": \"Ressourcenraster\",\n \"description\": \"Accessible name of a unit grid whose caller gave it no aria-label\"\n },\n \"uic.UnitGrid.changeGroupColor\": {\n \"defaultMessage\": \"Gruppenfarbe ändern\",\n \"description\": \"Button in a unit grid's hover card that opens the palette for the group\"\n },\n \"uic.UnitGrid.useColor\": {\n \"defaultMessage\": \"Farbe {index} verwenden\",\n \"description\": \"Accessible name of one palette swatch in a unit grid; {index} is its 1-based position\"\n },\n \"uic.Form.optional\": {\n \"defaultMessage\": \"(optional)\",\n \"description\": \"Suffix after the label of an optional field when requiredMark=\\\"optional\\\"\"\n },\n \"uic.Form.default\": {\n \"defaultMessage\": \"Feld-Validierungsfehler: {label}\",\n \"description\": \"Validation error when a rule failed without a more specific message\"\n },\n \"uic.Form.required\": {\n \"defaultMessage\": \"Bitte geben Sie {label} an\",\n \"description\": \"Validation error for an empty required field\"\n },\n \"uic.Form.whitespace\": {\n \"defaultMessage\": \"{label} darf kein Leerzeichen sein\",\n \"description\": \"Validation error for a required field that holds only whitespace\"\n },\n \"uic.Form.typeString\": {\n \"defaultMessage\": \"{label} ist nicht gültig. {type} erwartet\",\n \"description\": \"Validation error for a value that is not a string; {type} is the type name\"\n },\n \"uic.Form.typeNumber\": {\n \"defaultMessage\": \"{label} ist nicht gültig. {type} erwartet\",\n \"description\": \"Validation error for a value that is not a number; {type} is the type name\"\n },\n \"uic.Form.typeObject\": {\n \"defaultMessage\": \"{label} ist nicht gültig. {type} erwartet\",\n \"description\": \"Validation error for a value that is not an object; {type} is the type name\"\n },\n \"uic.Form.typeEmail\": {\n \"defaultMessage\": \"{label} ist nicht gültig. {type} erwartet\",\n \"description\": \"Validation error for an invalid email address; {type} is the type name\"\n },\n \"uic.Form.typeUrl\": {\n \"defaultMessage\": \"{label} ist nicht gültig. {type} erwartet\",\n \"description\": \"Validation error for an invalid URL; {type} is the type name\"\n },\n \"uic.Form.stringLen\": {\n \"defaultMessage\": \"{label} muss genau {len} Zeichen lang sein\",\n \"description\": \"Validation error for text of the wrong exact length\"\n },\n \"uic.Form.stringMin\": {\n \"defaultMessage\": \"{label} muss mindestens {min} Zeichen lang sein\",\n \"description\": \"Validation error for text shorter than the minimum\"\n },\n \"uic.Form.stringMax\": {\n \"defaultMessage\": \"{label} darf höchstens {max} Zeichen lang sein\",\n \"description\": \"Validation error for text longer than the maximum\"\n },\n \"uic.Form.stringRange\": {\n \"defaultMessage\": \"{label} muss zwischen {min} und {max} Zeichen lang sein\",\n \"description\": \"Validation error for text outside a length range\"\n },\n \"uic.Form.numberLen\": {\n \"defaultMessage\": \"{label} muss gleich {len} sein\",\n \"description\": \"Validation error for a number that must equal a value\"\n },\n \"uic.Form.numberMin\": {\n \"defaultMessage\": \"{label} muss mindestens {min} sein\",\n \"description\": \"Validation error for a number below the minimum\"\n },\n \"uic.Form.numberMax\": {\n \"defaultMessage\": \"{label} darf maximal {max} sein\",\n \"description\": \"Validation error for a number above the maximum\"\n },\n \"uic.Form.numberRange\": {\n \"defaultMessage\": \"{label} muss zwischen {min} und {max} liegen\",\n \"description\": \"Validation error for a number outside a range\"\n },\n \"uic.Form.arrayLen\": {\n \"defaultMessage\": \"Es müssen {len} {label} sein\",\n \"description\": \"Validation error for a list with the wrong number of items\"\n },\n \"uic.Form.arrayMin\": {\n \"defaultMessage\": \"Es müssen mindestens {min} {label} sein\",\n \"description\": \"Validation error for a list with too few items\"\n },\n \"uic.Form.arrayMax\": {\n \"defaultMessage\": \"Es dürfen maximal {max} {label} sein\",\n \"description\": \"Validation error for a list with too many items\"\n },\n \"uic.Form.arrayRange\": {\n \"defaultMessage\": \"Die Anzahl an {label} muss zwischen {min} und {max} liegen\",\n \"description\": \"Validation error for a list whose item count is outside a range\"\n },\n \"uic.Form.patternMismatch\": {\n \"defaultMessage\": \"{label} entspricht nicht dem {pattern} Muster\",\n \"description\": \"Validation error for text that does not match a pattern\"\n },\n \"uic.BulkEditFormItem.keepAsIs\": {\n \"defaultMessage\": \"Unverändert lassen\",\n \"description\": \"Placeholder of a bulk-edit field that leaves every selected item's current value unchanged\"\n },\n \"uic.BulkEditFormItem.clear\": {\n \"defaultMessage\": \"Löschen\",\n \"description\": \"Link that clears the field on every selected item, and the field's placeholder once cleared\"\n },\n \"uic.BulkEditFormItem.undoChanges\": {\n \"defaultMessage\": \"Änderungen rückgängig machen\",\n \"description\": \"Link that returns a bulk-edit field to keeping the current values\"\n },\n \"uic.BulkErrorModal.title\": {\n \"defaultMessage\": \"Ausführung fehlgeschlagen\",\n \"description\": \"Default title of the dialog that lists the failed items of a bulk operation\"\n },\n \"uic.BulkErrorModal.errorOccurred\": {\n \"defaultMessage\": \"Ein Fehler ist aufgetreten\",\n \"description\": \"Title of the error banner above the failed items, over the caller's guidance\"\n },\n \"uic.DataGrid.noData\": {\n \"defaultMessage\": \"Keine Daten zum Anzeigen\",\n \"description\": \"Shown in place of a data grid's rows when there are none\"\n },\n \"uic.DataGrid.invalidPage\": {\n \"defaultMessage\": \"Ungültige Seitenzahl\",\n \"description\": \"Shown in place of a data grid's rows when the current page lies past the last page\"\n },\n \"uic.DataGrid.goToFirstPage\": {\n \"defaultMessage\": \"Zur ersten Seite\",\n \"description\": \"Button under the invalid page message that returns to page 1\"\n },\n \"uic.DataGrid.expandRow\": {\n \"defaultMessage\": \"Zeile ausklappen\",\n \"description\": \"Accessible name of the button that shows or hides a row's details\"\n },\n \"uic.DataGrid.pagination\": {\n \"defaultMessage\": \"Seitennummerierung\",\n \"description\": \"Accessible name of a data grid's page navigation\"\n },\n \"uic.DataGrid.range\": {\n \"defaultMessage\": \"{start} - {end} von {total} Elementen\",\n \"description\": \"Beside a data grid's page navigation: the rows on screen out of the total. {start} and {end} are 1-based row numbers\"\n },\n \"uic.DataGrid.settings\": {\n \"defaultMessage\": \"Tabelleneinstellungen\",\n \"description\": \"Button under a data grid that opens its column settings, and the title of that dialog\"\n },\n \"uic.DataGrid.exportCsv\": {\n \"defaultMessage\": \"Als CSV exportieren\",\n \"description\": \"Button under a data grid that opens the CSV export dialog, and the title of that dialog\"\n },\n \"uic.DataGrid.selectColumns\": {\n \"defaultMessage\": \"Wählen Sie Spalten aus, um angezeigt zu werden\",\n \"description\": \"Subtitle of a data grid's column settings and CSV export dialogs\"\n },\n \"uic.DataGrid.searchColumns\": {\n \"defaultMessage\": \"Suchtabellenspalten\",\n \"description\": \"Placeholder of the column search field in a data grid's dialogs, also shown when no column matches\"\n },\n \"uic.DataGrid.reorderColumn\": {\n \"defaultMessage\": \"{column} verschieben\",\n \"description\": \"Accessible name of the drag handle beside a column in a data grid's column settings dialog. {column} is the column's label\"\n },\n \"uic.DataGrid.reorderInstructions\": {\n \"defaultMessage\": \"Drücken Sie die Leertaste, um die Spalte aufzunehmen, verschieben Sie sie mit den Pfeiltasten und drücken Sie erneut die Leertaste, um sie abzulegen, oder Escape, um abzubrechen.\",\n \"description\": \"Screen reader instructions for a drag handle in a data grid's column settings dialog\"\n },\n \"uic.DataGrid.reorderPickedUp\": {\n \"defaultMessage\": \"{column} aufgenommen. Position {position} von {total}.\",\n \"description\": \"Screen reader announcement when a column is picked up for reordering in the column settings dialog. {position} is 1-based\"\n },\n \"uic.DataGrid.reorderMoved\": {\n \"defaultMessage\": \"{column} auf Position {position} von {total} verschoben.\",\n \"description\": \"Screen reader announcement while a picked-up column moves in the column settings dialog. {position} is 1-based\"\n },\n \"uic.DataGrid.reorderDropped\": {\n \"defaultMessage\": \"{column} auf Position {position} von {total} abgelegt.\",\n \"description\": \"Screen reader announcement when a column is dropped in the column settings dialog. {position} is 1-based\"\n },\n \"uic.DataGrid.reorderCancelled\": {\n \"defaultMessage\": \"Verschieben abgebrochen. {column} ist wieder auf Position {position} von {total}.\",\n \"description\": \"Screen reader announcement when reordering a column is cancelled in the column settings dialog. {position} is 1-based\"\n },\n \"uic.DataGrid.export\": {\n \"defaultMessage\": \"Exportieren\",\n \"description\": \"Primary button of a data grid's CSV export dialog\"\n },\n \"uic.PagedSelector.placeholder\": {\n \"defaultMessage\": \"{label} auswählen\",\n \"description\": \"Placeholder of a selector with nothing selected; {label} is the field's label\"\n },\n \"uic.PagedSelector.searchOptions\": {\n \"defaultMessage\": \"Optionen durchsuchen\",\n \"description\": \"Accessible name of the search box at the top of a selector's option list\"\n },\n \"uic.PagedSelector.searchPlaceholder\": {\n \"defaultMessage\": \"Suchen\",\n \"description\": \"Placeholder of the search box at the top of a selector's option list\"\n },\n \"uic.PagedSelector.clearSearch\": {\n \"defaultMessage\": \"Optionen durchsuchen löschen\",\n \"description\": \"Accessible name of the button that empties a selector's search box\"\n },\n \"uic.PagedSelector.noResults\": {\n \"defaultMessage\": \"Keine Ergebnisse\",\n \"description\": \"Shown in a selector's option list when no option matches\"\n },\n \"uic.PagedSelector.loading\": {\n \"defaultMessage\": \"Wird geladen...\",\n \"description\": \"Shown in a selector's empty option list while options are being fetched\"\n },\n \"uic.PagedSelector.totalItems\": {\n \"defaultMessage\": \"Total {total} Elemente\",\n \"description\": \"Foot of a selector's option list; {total} is how many options exist in all pages\"\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"de-DE.js","names":[],"sources":["../../../src/i18n/locales/de-DE.json"],"sourcesContent":["{\n \"uic.common.ok\": {\n \"defaultMessage\": \"OK\",\n \"description\": \"Generic label of a primary action button that accepts\"\n },\n \"uic.common.cancel\": {\n \"defaultMessage\": \"Abbrechen\",\n \"description\": \"Generic label of a button that backs out of an action or stops a task\"\n },\n \"uic.common.confirm\": {\n \"defaultMessage\": \"Bestätigen\",\n \"description\": \"Generic label of a button that confirms an action\"\n },\n \"uic.common.delete\": {\n \"defaultMessage\": \"Löschen\",\n \"description\": \"Generic label of a button that deletes something\"\n },\n \"uic.common.retry\": {\n \"defaultMessage\": \"Wiederholen\",\n \"description\": \"Generic label of a button that retries a failed action or load\"\n },\n \"uic.common.apply\": {\n \"defaultMessage\": \"Anwenden\",\n \"description\": \"Generic label of a button that applies the changes made in a dialog\"\n },\n \"uic.Board.dragHandle\": {\n \"defaultMessage\": \"Ziehgriff\",\n \"description\": \"Accessible name of the button at a board item's top-left corner that moves the item\"\n },\n \"uic.Board.resizeHandle\": {\n \"defaultMessage\": \"Größengriff\",\n \"description\": \"Accessible name of the button at a board item's bottom-right corner that resizes the item\"\n },\n \"uic.Board.moveStarted\": {\n \"defaultMessage\": \"Wird gezogen.\",\n \"description\": \"Screen reader announcement when a board item is picked up to be moved\"\n },\n \"uic.Board.resizeStarted\": {\n \"defaultMessage\": \"Größe wird geändert.\",\n \"description\": \"Screen reader announcement when a board item starts being resized\"\n },\n \"uic.Board.itemMoved\": {\n \"defaultMessage\": \"Element in Spalte {column}, Zeile {row} verschoben.\",\n \"description\": \"Screen reader announcement while a board item moves. {column} and {row} are 1-based\"\n },\n \"uic.Board.itemResized\": {\n \"defaultMessage\": \"Elementgröße auf {columns} Spalten mal {rows} Zeilen geändert.\",\n \"description\": \"Screen reader announcement while a board item is resized\"\n },\n \"uic.Board.moveCommitted\": {\n \"defaultMessage\": \"Verschieben übernommen.\",\n \"description\": \"Screen reader announcement when a board item is dropped in its new place\"\n },\n \"uic.Board.resizeCommitted\": {\n \"defaultMessage\": \"Größenänderung übernommen.\",\n \"description\": \"Screen reader announcement when a board item's new size is applied\"\n },\n \"uic.Board.moveDiscarded\": {\n \"defaultMessage\": \"Verschieben verworfen.\",\n \"description\": \"Screen reader announcement when moving a board item is cancelled\"\n },\n \"uic.Board.resizeDiscarded\": {\n \"defaultMessage\": \"Größenänderung verworfen.\",\n \"description\": \"Screen reader announcement when resizing a board item is cancelled\"\n },\n \"uic.Board.itemRemoved\": {\n \"defaultMessage\": \"Element entfernt.\",\n \"description\": \"Screen reader announcement when a board item is removed\"\n },\n \"uic.ColorPicker.label\": {\n \"defaultMessage\": \"Farbe auswählen\",\n \"description\": \"Accessible name of a color picker whose caller gave it no label\"\n },\n \"uic.ColorPicker.hexValue\": {\n \"defaultMessage\": \"Hex-Wert\",\n \"description\": \"Hidden label of the color picker's text field for a #rrggbb value\"\n },\n \"uic.ColorPicker.clear\": {\n \"defaultMessage\": \"Löschen\",\n \"description\": \"Button in a color picker that removes the chosen color\"\n },\n \"uic.ColorPicker.noColor\": {\n \"defaultMessage\": \"Keine Farbe\",\n \"description\": \"Shown on a color picker's trigger when no color is set\"\n },\n \"uic.DeleteConfirmModal.title\": {\n \"defaultMessage\": \"Löschen\",\n \"description\": \"Title of the dialog that confirms deleting one item\"\n },\n \"uic.DeleteConfirmModal.titleMany\": {\n \"defaultMessage\": \"{count, plural, other {# Elemente löschen}}\",\n \"description\": \"Title of the dialog that confirms deleting several items; {count} is how many\"\n },\n \"uic.DeleteConfirmModal.description\": {\n \"defaultMessage\": \"Sind Sie sicher, dass Sie löschen möchten?\",\n \"description\": \"Question above the list of items about to be deleted\"\n },\n \"uic.DeleteConfirmModal.targetDescription\": {\n \"defaultMessage\": \"Möchten Sie {target} wirklich dauerhaft löschen?\",\n \"description\": \"Question above the list of items about to be deleted; {target} names the kind of item, e.g. Project\"\n },\n \"uic.DeleteConfirmModal.typeToConfirm\": {\n \"defaultMessage\": \"Geben Sie {confirmText} ein, um zu bestätigen.\",\n \"description\": \"Instruction above the confirmation field; {confirmText} is the text to type, shown as a token\"\n },\n \"uic.DeleteConfirmModal.confirmText\": {\n \"defaultMessage\": \"Löschen\",\n \"description\": \"The word the user types to confirm deleting several items at once\"\n },\n \"uic.DeleteConfirmModal.cannotBeUndone\": {\n \"defaultMessage\": \"Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"description\": \"Warning that the deletion is permanent\"\n },\n \"uic.NumberStepper.increase\": {\n \"defaultMessage\": \"Erhöhen\",\n \"description\": \"Accessible name of the button that steps a number field up\"\n },\n \"uic.NumberStepper.decrease\": {\n \"defaultMessage\": \"Verringern\",\n \"description\": \"Accessible name of the button that steps a number field down\"\n },\n \"uic.SelectionLabel.selectedCount\": {\n \"defaultMessage\": \"{count} ausgewählt\",\n \"description\": \"How many items are selected, e.g. rows of a table; {count} is the number\"\n },\n \"uic.SelectionLabel.clear\": {\n \"defaultMessage\": \"Alle abwählen\",\n \"description\": \"Button that clears the whole selection\"\n },\n \"uic.SkeletonCard.loading\": {\n \"defaultMessage\": \"Wird geladen\",\n \"description\": \"Accessible name of a card-shaped loading placeholder\"\n },\n \"uic.SkeletonRow.loading\": {\n \"defaultMessage\": \"Wird geladen\",\n \"description\": \"Accessible name of one list-row loading placeholder\"\n },\n \"uic.SkeletonText.loading\": {\n \"defaultMessage\": \"Wird geladen\",\n \"description\": \"Accessible name of a text-block loading placeholder\"\n },\n \"uic.Statistic.unlimited\": {\n \"defaultMessage\": \"Unbegrenzt\",\n \"description\": \"Shown in place of a metric's value when the value has no limit\"\n },\n \"uic.TokenRow.more\": {\n \"defaultMessage\": \"und {count} weitere\",\n \"description\": \"After a row of tokens cut short, how many were left out; {count} is the number\"\n },\n \"uic.UncontrolledInput.label\": {\n \"defaultMessage\": \"Auswählen\",\n \"description\": \"Hidden accessible name of an input whose caller gave it no label of its own\"\n },\n \"uic.UnitGrid.label\": {\n \"defaultMessage\": \"Ressourcenraster\",\n \"description\": \"Accessible name of a unit grid whose caller gave it no aria-label\"\n },\n \"uic.UnitGrid.changeGroupColor\": {\n \"defaultMessage\": \"Gruppenfarbe ändern\",\n \"description\": \"Button in a unit grid's hover card that opens the palette for the group\"\n },\n \"uic.UnitGrid.useColor\": {\n \"defaultMessage\": \"Farbe {index} verwenden\",\n \"description\": \"Accessible name of one palette swatch in a unit grid; {index} is its 1-based position\"\n },\n \"uic.Form.optional\": {\n \"defaultMessage\": \"(optional)\",\n \"description\": \"Suffix after the label of an optional field when requiredMark=\\\"optional\\\"\"\n },\n \"uic.Form.default\": {\n \"defaultMessage\": \"Feld-Validierungsfehler: {label}\",\n \"description\": \"Validation error when a rule failed without a more specific message\"\n },\n \"uic.Form.required\": {\n \"defaultMessage\": \"Bitte geben Sie {label} an\",\n \"description\": \"Validation error for an empty required field\"\n },\n \"uic.Form.whitespace\": {\n \"defaultMessage\": \"{label} darf kein Leerzeichen sein\",\n \"description\": \"Validation error for a required field that holds only whitespace\"\n },\n \"uic.Form.typeString\": {\n \"defaultMessage\": \"{label} ist nicht gültig. {type} erwartet\",\n \"description\": \"Validation error for a value that is not a string; {type} is the type name\"\n },\n \"uic.Form.typeNumber\": {\n \"defaultMessage\": \"{label} ist nicht gültig. {type} erwartet\",\n \"description\": \"Validation error for a value that is not a number; {type} is the type name\"\n },\n \"uic.Form.typeObject\": {\n \"defaultMessage\": \"{label} ist nicht gültig. {type} erwartet\",\n \"description\": \"Validation error for a value that is not an object; {type} is the type name\"\n },\n \"uic.Form.typeEmail\": {\n \"defaultMessage\": \"{label} ist nicht gültig. {type} erwartet\",\n \"description\": \"Validation error for an invalid email address; {type} is the type name\"\n },\n \"uic.Form.typeUrl\": {\n \"defaultMessage\": \"{label} ist nicht gültig. {type} erwartet\",\n \"description\": \"Validation error for an invalid URL; {type} is the type name\"\n },\n \"uic.Form.stringLen\": {\n \"defaultMessage\": \"{label} muss genau {len} Zeichen lang sein\",\n \"description\": \"Validation error for text of the wrong exact length\"\n },\n \"uic.Form.stringMin\": {\n \"defaultMessage\": \"{label} muss mindestens {min} Zeichen lang sein\",\n \"description\": \"Validation error for text shorter than the minimum\"\n },\n \"uic.Form.stringMax\": {\n \"defaultMessage\": \"{label} darf höchstens {max} Zeichen lang sein\",\n \"description\": \"Validation error for text longer than the maximum\"\n },\n \"uic.Form.stringRange\": {\n \"defaultMessage\": \"{label} muss zwischen {min} und {max} Zeichen lang sein\",\n \"description\": \"Validation error for text outside a length range\"\n },\n \"uic.Form.numberLen\": {\n \"defaultMessage\": \"{label} muss gleich {len} sein\",\n \"description\": \"Validation error for a number that must equal a value\"\n },\n \"uic.Form.numberMin\": {\n \"defaultMessage\": \"{label} muss mindestens {min} sein\",\n \"description\": \"Validation error for a number below the minimum\"\n },\n \"uic.Form.numberMax\": {\n \"defaultMessage\": \"{label} darf maximal {max} sein\",\n \"description\": \"Validation error for a number above the maximum\"\n },\n \"uic.Form.numberRange\": {\n \"defaultMessage\": \"{label} muss zwischen {min} und {max} liegen\",\n \"description\": \"Validation error for a number outside a range\"\n },\n \"uic.Form.arrayLen\": {\n \"defaultMessage\": \"Es müssen {len} {label} sein\",\n \"description\": \"Validation error for a list with the wrong number of items\"\n },\n \"uic.Form.arrayMin\": {\n \"defaultMessage\": \"Es müssen mindestens {min} {label} sein\",\n \"description\": \"Validation error for a list with too few items\"\n },\n \"uic.Form.arrayMax\": {\n \"defaultMessage\": \"Es dürfen maximal {max} {label} sein\",\n \"description\": \"Validation error for a list with too many items\"\n },\n \"uic.Form.arrayRange\": {\n \"defaultMessage\": \"Die Anzahl an {label} muss zwischen {min} und {max} liegen\",\n \"description\": \"Validation error for a list whose item count is outside a range\"\n },\n \"uic.Form.patternMismatch\": {\n \"defaultMessage\": \"{label} entspricht nicht dem {pattern} Muster\",\n \"description\": \"Validation error for text that does not match a pattern\"\n },\n \"uic.BulkEditFormItem.keepAsIs\": {\n \"defaultMessage\": \"Unverändert lassen\",\n \"description\": \"Placeholder of a bulk-edit field that leaves every selected item's current value unchanged\"\n },\n \"uic.BulkEditFormItem.clear\": {\n \"defaultMessage\": \"Löschen\",\n \"description\": \"Link that clears the field on every selected item, and the field's placeholder once cleared\"\n },\n \"uic.BulkEditFormItem.undoChanges\": {\n \"defaultMessage\": \"Änderungen rückgängig machen\",\n \"description\": \"Link that returns a bulk-edit field to keeping the current values\"\n },\n \"uic.BulkErrorModal.title\": {\n \"defaultMessage\": \"Ausführung fehlgeschlagen\",\n \"description\": \"Default title of the dialog that lists the failed items of a bulk operation\"\n },\n \"uic.BulkErrorModal.errorOccurred\": {\n \"defaultMessage\": \"Ein Fehler ist aufgetreten\",\n \"description\": \"Title of the error banner above the failed items, over the caller's guidance\"\n },\n \"uic.DataGrid.noData\": {\n \"defaultMessage\": \"Keine Daten zum Anzeigen\",\n \"description\": \"Shown in place of a data grid's rows when there are none\"\n },\n \"uic.DataGrid.invalidPage\": {\n \"defaultMessage\": \"Ungültige Seitenzahl\",\n \"description\": \"Shown in place of a data grid's rows when the current page lies past the last page\"\n },\n \"uic.DataGrid.goToFirstPage\": {\n \"defaultMessage\": \"Zur ersten Seite\",\n \"description\": \"Button under the invalid page message that returns to page 1\"\n },\n \"uic.DataGrid.expandRow\": {\n \"defaultMessage\": \"Zeile ausklappen\",\n \"description\": \"Accessible name of the button that shows or hides a row's details\"\n },\n \"uic.DataGrid.pagination\": {\n \"defaultMessage\": \"Seitennummerierung\",\n \"description\": \"Accessible name of a data grid's page navigation\"\n },\n \"uic.DataGrid.range\": {\n \"defaultMessage\": \"{start} - {end} von {total} Elementen\",\n \"description\": \"Beside a data grid's page navigation: the rows on screen out of the total. {start} and {end} are 1-based row numbers\"\n },\n \"uic.DataGrid.settings\": {\n \"defaultMessage\": \"Tabelleneinstellungen\",\n \"description\": \"Button under a data grid that opens its column settings, and the title of that dialog\"\n },\n \"uic.DataGrid.exportCsv\": {\n \"defaultMessage\": \"Als CSV exportieren\",\n \"description\": \"Button under a data grid that opens the CSV export dialog, and the title of that dialog\"\n },\n \"uic.DataGrid.selectColumns\": {\n \"defaultMessage\": \"Wählen Sie Spalten aus, um angezeigt zu werden\",\n \"description\": \"Subtitle of a data grid's column settings and CSV export dialogs\"\n },\n \"uic.DataGrid.searchColumns\": {\n \"defaultMessage\": \"Suchtabellenspalten\",\n \"description\": \"Placeholder of the column search field in a data grid's dialogs, also shown when no column matches\"\n },\n \"uic.DataGrid.reorderColumn\": {\n \"defaultMessage\": \"{column} verschieben\",\n \"description\": \"Accessible name of the drag handle beside a column in a data grid's column settings dialog. {column} is the column's label\"\n },\n \"uic.DataGrid.reorderInstructions\": {\n \"defaultMessage\": \"Drücken Sie die Leertaste, um die Spalte aufzunehmen, verschieben Sie sie mit den Pfeiltasten und drücken Sie erneut die Leertaste, um sie abzulegen, oder Escape, um abzubrechen.\",\n \"description\": \"Screen reader instructions for a drag handle in a data grid's column settings dialog\"\n },\n \"uic.DataGrid.reorderPickedUp\": {\n \"defaultMessage\": \"{column} aufgenommen. Position {position} von {total}.\",\n \"description\": \"Screen reader announcement when a column is picked up for reordering in the column settings dialog. {position} is 1-based\"\n },\n \"uic.DataGrid.reorderMoved\": {\n \"defaultMessage\": \"{column} auf Position {position} von {total} verschoben.\",\n \"description\": \"Screen reader announcement while a picked-up column moves in the column settings dialog. {position} is 1-based\"\n },\n \"uic.DataGrid.reorderDropped\": {\n \"defaultMessage\": \"{column} auf Position {position} von {total} abgelegt.\",\n \"description\": \"Screen reader announcement when a column is dropped in the column settings dialog. {position} is 1-based\"\n },\n \"uic.DataGrid.reorderCancelled\": {\n \"defaultMessage\": \"Verschieben abgebrochen. {column} ist wieder auf Position {position} von {total}.\",\n \"description\": \"Screen reader announcement when reordering a column is cancelled in the column settings dialog. {position} is 1-based\"\n },\n \"uic.DataGrid.export\": {\n \"defaultMessage\": \"Exportieren\",\n \"description\": \"Primary button of a data grid's CSV export dialog\"\n },\n \"uic.PagedSelector.placeholder\": {\n \"defaultMessage\": \"{label} auswählen\",\n \"description\": \"Placeholder of a selector with nothing selected; {label} is the field's label\"\n },\n \"uic.PagedSelector.searchOptions\": {\n \"defaultMessage\": \"Optionen durchsuchen\",\n \"description\": \"Accessible name of the search box at the top of a selector's option list\"\n },\n \"uic.PagedSelector.searchPlaceholder\": {\n \"defaultMessage\": \"Suchen\",\n \"description\": \"Placeholder of the search box at the top of a selector's option list\"\n },\n \"uic.PagedSelector.clearSearch\": {\n \"defaultMessage\": \"Optionen durchsuchen löschen\",\n \"description\": \"Accessible name of the button that empties a selector's search box\"\n },\n \"uic.PagedSelector.noResults\": {\n \"defaultMessage\": \"Keine Ergebnisse\",\n \"description\": \"Shown in a selector's option list when no option matches\"\n },\n \"uic.PagedSelector.loading\": {\n \"defaultMessage\": \"Wird geladen...\",\n \"description\": \"Shown in a selector's empty option list while options are being fetched\"\n },\n \"uic.PagedSelector.totalItems\": {\n \"defaultMessage\": \"Total {total} Elemente\",\n \"description\": \"Foot of a selector's option list; {total} is how many options exist in all pages\"\n },\n \"uic.Board.directionUp\": {\n \"defaultMessage\": \"Nach oben\",\n \"description\": \"Accessible name of the button that moves an activated board item, or shrinks a resized one, one row up\"\n },\n \"uic.Board.directionDown\": {\n \"defaultMessage\": \"Nach unten\",\n \"description\": \"Accessible name of the button that moves an activated board item, or grows a resized one, one row down\"\n },\n \"uic.Board.directionLeft\": {\n \"defaultMessage\": \"Nach links\",\n \"description\": \"Accessible name of the button that moves an activated board item, or shrinks a resized one, one column left\"\n },\n \"uic.Board.directionRight\": {\n \"defaultMessage\": \"Nach rechts\",\n \"description\": \"Accessible name of the button that moves an activated board item, or grows a resized one, one column right\"\n }\n}\n"],"mappings":""}
@@ -24,6 +24,50 @@ var e = {
24
24
  defaultMessage: "Εφαρμογή",
25
25
  description: "Generic label of a button that applies the changes made in a dialog"
26
26
  },
27
+ "uic.Board.dragHandle": {
28
+ defaultMessage: "Λαβή μεταφοράς",
29
+ description: "Accessible name of the button at a board item's top-left corner that moves the item"
30
+ },
31
+ "uic.Board.resizeHandle": {
32
+ defaultMessage: "Λαβή αλλαγής μεγέθους",
33
+ description: "Accessible name of the button at a board item's bottom-right corner that resizes the item"
34
+ },
35
+ "uic.Board.moveStarted": {
36
+ defaultMessage: "Μεταφορά σε εξέλιξη.",
37
+ description: "Screen reader announcement when a board item is picked up to be moved"
38
+ },
39
+ "uic.Board.resizeStarted": {
40
+ defaultMessage: "Αλλαγή μεγέθους σε εξέλιξη.",
41
+ description: "Screen reader announcement when a board item starts being resized"
42
+ },
43
+ "uic.Board.itemMoved": {
44
+ defaultMessage: "Το στοιχείο μετακινήθηκε στη στήλη {column}, γραμμή {row}.",
45
+ description: "Screen reader announcement while a board item moves. {column} and {row} are 1-based"
46
+ },
47
+ "uic.Board.itemResized": {
48
+ defaultMessage: "Το μέγεθος του στοιχείου άλλαξε σε {columns} στήλες επί {rows} γραμμές.",
49
+ description: "Screen reader announcement while a board item is resized"
50
+ },
51
+ "uic.Board.moveCommitted": {
52
+ defaultMessage: "Η μετακίνηση εφαρμόστηκε.",
53
+ description: "Screen reader announcement when a board item is dropped in its new place"
54
+ },
55
+ "uic.Board.resizeCommitted": {
56
+ defaultMessage: "Η αλλαγή μεγέθους εφαρμόστηκε.",
57
+ description: "Screen reader announcement when a board item's new size is applied"
58
+ },
59
+ "uic.Board.moveDiscarded": {
60
+ defaultMessage: "Η μετακίνηση ακυρώθηκε.",
61
+ description: "Screen reader announcement when moving a board item is cancelled"
62
+ },
63
+ "uic.Board.resizeDiscarded": {
64
+ defaultMessage: "Η αλλαγή μεγέθους ακυρώθηκε.",
65
+ description: "Screen reader announcement when resizing a board item is cancelled"
66
+ },
67
+ "uic.Board.itemRemoved": {
68
+ defaultMessage: "Το στοιχείο αφαιρέθηκε.",
69
+ description: "Screen reader announcement when a board item is removed"
70
+ },
27
71
  "uic.ColorPicker.label": {
28
72
  defaultMessage: "Επιλογή χρώματος",
29
73
  description: "Accessible name of a color picker whose caller gave it no label"
@@ -323,6 +367,22 @@ var e = {
323
367
  "uic.PagedSelector.totalItems": {
324
368
  defaultMessage: "Σύνολο {total} στοιχεία",
325
369
  description: "Foot of a selector's option list; {total} is how many options exist in all pages"
370
+ },
371
+ "uic.Board.directionUp": {
372
+ defaultMessage: "Πάνω",
373
+ description: "Accessible name of the button that moves an activated board item, or shrinks a resized one, one row up"
374
+ },
375
+ "uic.Board.directionDown": {
376
+ defaultMessage: "Κάτω",
377
+ description: "Accessible name of the button that moves an activated board item, or grows a resized one, one row down"
378
+ },
379
+ "uic.Board.directionLeft": {
380
+ defaultMessage: "Αριστερά",
381
+ description: "Accessible name of the button that moves an activated board item, or shrinks a resized one, one column left"
382
+ },
383
+ "uic.Board.directionRight": {
384
+ defaultMessage: "Δεξιά",
385
+ description: "Accessible name of the button that moves an activated board item, or grows a resized one, one column right"
326
386
  }
327
387
  };
328
388
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"el-GR.js","names":[],"sources":["../../../src/i18n/locales/el-GR.json"],"sourcesContent":["{\n \"uic.common.ok\": {\n \"defaultMessage\": \"OK\",\n \"description\": \"Generic label of a primary action button that accepts\"\n },\n \"uic.common.cancel\": {\n \"defaultMessage\": \"Άκυρο\",\n \"description\": \"Generic label of a button that backs out of an action or stops a task\"\n },\n \"uic.common.confirm\": {\n \"defaultMessage\": \"Επιβεβαίωση\",\n \"description\": \"Generic label of a button that confirms an action\"\n },\n \"uic.common.delete\": {\n \"defaultMessage\": \"Διαγραφή\",\n \"description\": \"Generic label of a button that deletes something\"\n },\n \"uic.common.retry\": {\n \"defaultMessage\": \"Επανάληψη\",\n \"description\": \"Generic label of a button that retries a failed action or load\"\n },\n \"uic.common.apply\": {\n \"defaultMessage\": \"Εφαρμογή\",\n \"description\": \"Generic label of a button that applies the changes made in a dialog\"\n },\n \"uic.ColorPicker.label\": {\n \"defaultMessage\": \"Επιλογή χρώματος\",\n \"description\": \"Accessible name of a color picker whose caller gave it no label\"\n },\n \"uic.ColorPicker.hexValue\": {\n \"defaultMessage\": \"Δεκαεξαδική τιμή\",\n \"description\": \"Hidden label of the color picker's text field for a #rrggbb value\"\n },\n \"uic.ColorPicker.clear\": {\n \"defaultMessage\": \"Καθαρισμός\",\n \"description\": \"Button in a color picker that removes the chosen color\"\n },\n \"uic.ColorPicker.noColor\": {\n \"defaultMessage\": \"Χωρίς χρώμα\",\n \"description\": \"Shown on a color picker's trigger when no color is set\"\n },\n \"uic.DeleteConfirmModal.title\": {\n \"defaultMessage\": \"Διαγραφή\",\n \"description\": \"Title of the dialog that confirms deleting one item\"\n },\n \"uic.DeleteConfirmModal.titleMany\": {\n \"defaultMessage\": \"{count, plural, other {Διαγραφή # στοιχείων}}\",\n \"description\": \"Title of the dialog that confirms deleting several items; {count} is how many\"\n },\n \"uic.DeleteConfirmModal.description\": {\n \"defaultMessage\": \"Είστε σίγουροι ότι θέλετε να διαγράψετε;\",\n \"description\": \"Question above the list of items about to be deleted\"\n },\n \"uic.DeleteConfirmModal.targetDescription\": {\n \"defaultMessage\": \"Είστε βέβαιοι ότι θέλετε να διαγράψετε οριστικά {target};\",\n \"description\": \"Question above the list of items about to be deleted; {target} names the kind of item, e.g. Project\"\n },\n \"uic.DeleteConfirmModal.typeToConfirm\": {\n \"defaultMessage\": \"Πληκτρολογήστε {confirmText} για επιβεβαίωση.\",\n \"description\": \"Instruction above the confirmation field; {confirmText} is the text to type, shown as a token\"\n },\n \"uic.DeleteConfirmModal.confirmText\": {\n \"defaultMessage\": \"Διαγράφω\",\n \"description\": \"The word the user types to confirm deleting several items at once\"\n },\n \"uic.DeleteConfirmModal.cannotBeUndone\": {\n \"defaultMessage\": \"Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.\",\n \"description\": \"Warning that the deletion is permanent\"\n },\n \"uic.NumberStepper.increase\": {\n \"defaultMessage\": \"Αύξηση\",\n \"description\": \"Accessible name of the button that steps a number field up\"\n },\n \"uic.NumberStepper.decrease\": {\n \"defaultMessage\": \"Μείωση\",\n \"description\": \"Accessible name of the button that steps a number field down\"\n },\n \"uic.SelectionLabel.selectedCount\": {\n \"defaultMessage\": \"{count} Επιλεγμένη\",\n \"description\": \"How many items are selected, e.g. rows of a table; {count} is the number\"\n },\n \"uic.SelectionLabel.clear\": {\n \"defaultMessage\": \"Αποεπιλογή όλων\",\n \"description\": \"Button that clears the whole selection\"\n },\n \"uic.SkeletonCard.loading\": {\n \"defaultMessage\": \"Φόρτωση\",\n \"description\": \"Accessible name of a card-shaped loading placeholder\"\n },\n \"uic.SkeletonRow.loading\": {\n \"defaultMessage\": \"Φόρτωση\",\n \"description\": \"Accessible name of one list-row loading placeholder\"\n },\n \"uic.SkeletonText.loading\": {\n \"defaultMessage\": \"Φόρτωση\",\n \"description\": \"Accessible name of a text-block loading placeholder\"\n },\n \"uic.Statistic.unlimited\": {\n \"defaultMessage\": \"Απεριόριστος\",\n \"description\": \"Shown in place of a metric's value when the value has no limit\"\n },\n \"uic.TokenRow.more\": {\n \"defaultMessage\": \"και {count} ακόμη\",\n \"description\": \"After a row of tokens cut short, how many were left out; {count} is the number\"\n },\n \"uic.UncontrolledInput.label\": {\n \"defaultMessage\": \"Επιλογή\",\n \"description\": \"Hidden accessible name of an input whose caller gave it no label of its own\"\n },\n \"uic.UnitGrid.label\": {\n \"defaultMessage\": \"Πλέγμα πόρων\",\n \"description\": \"Accessible name of a unit grid whose caller gave it no aria-label\"\n },\n \"uic.UnitGrid.changeGroupColor\": {\n \"defaultMessage\": \"Αλλαγή χρώματος ομάδας\",\n \"description\": \"Button in a unit grid's hover card that opens the palette for the group\"\n },\n \"uic.UnitGrid.useColor\": {\n \"defaultMessage\": \"Χρήση χρώματος {index}\",\n \"description\": \"Accessible name of one palette swatch in a unit grid; {index} is its 1-based position\"\n },\n \"uic.Form.optional\": {\n \"defaultMessage\": \"(προαιρετικό)\",\n \"description\": \"Suffix after the label of an optional field when requiredMark=\\\"optional\\\"\"\n },\n \"uic.Form.default\": {\n \"defaultMessage\": \"Σφάλμα επικύρωσης πεδίου για {label}\",\n \"description\": \"Validation error when a rule failed without a more specific message\"\n },\n \"uic.Form.required\": {\n \"defaultMessage\": \"Παρακαλώ εισάγετε {label}\",\n \"description\": \"Validation error for an empty required field\"\n },\n \"uic.Form.whitespace\": {\n \"defaultMessage\": \"Το {label} δεν μπορεί να είναι κενός χαρακτήρας\",\n \"description\": \"Validation error for a required field that holds only whitespace\"\n },\n \"uic.Form.typeString\": {\n \"defaultMessage\": \"Το {label} δεν είναι έγκυρο {type}\",\n \"description\": \"Validation error for a value that is not a string; {type} is the type name\"\n },\n \"uic.Form.typeNumber\": {\n \"defaultMessage\": \"Το {label} δεν είναι έγκυρο {type}\",\n \"description\": \"Validation error for a value that is not a number; {type} is the type name\"\n },\n \"uic.Form.typeObject\": {\n \"defaultMessage\": \"Το {label} δεν είναι έγκυρο {type}\",\n \"description\": \"Validation error for a value that is not an object; {type} is the type name\"\n },\n \"uic.Form.typeEmail\": {\n \"defaultMessage\": \"Το {label} δεν είναι έγκυρο {type}\",\n \"description\": \"Validation error for an invalid email address; {type} is the type name\"\n },\n \"uic.Form.typeUrl\": {\n \"defaultMessage\": \"Το {label} δεν είναι έγκυρο {type}\",\n \"description\": \"Validation error for an invalid URL; {type} is the type name\"\n },\n \"uic.Form.stringLen\": {\n \"defaultMessage\": \"Το {label} πρέπει να είναι {len} χαρακτήρες\",\n \"description\": \"Validation error for text of the wrong exact length\"\n },\n \"uic.Form.stringMin\": {\n \"defaultMessage\": \"Το {label} πρέπει να είναι τουλάχιστον {min} χαρακτήρες\",\n \"description\": \"Validation error for text shorter than the minimum\"\n },\n \"uic.Form.stringMax\": {\n \"defaultMessage\": \"Το {label} πρέπει να είναι το πολύ {max} χαρακτήρες\",\n \"description\": \"Validation error for text longer than the maximum\"\n },\n \"uic.Form.stringRange\": {\n \"defaultMessage\": \"Το {label} πρέπει να είναι μεταξύ {min}-{max} χαρακτήρων\",\n \"description\": \"Validation error for text outside a length range\"\n },\n \"uic.Form.numberLen\": {\n \"defaultMessage\": \"Το {label} πρέπει να είναι ίσο με {len}\",\n \"description\": \"Validation error for a number that must equal a value\"\n },\n \"uic.Form.numberMin\": {\n \"defaultMessage\": \"Το {label} πρέπει να είναι τουλάχιστον {min}\",\n \"description\": \"Validation error for a number below the minimum\"\n },\n \"uic.Form.numberMax\": {\n \"defaultMessage\": \"Το {label} πρέπει να είναι το πολύ {max}\",\n \"description\": \"Validation error for a number above the maximum\"\n },\n \"uic.Form.numberRange\": {\n \"defaultMessage\": \"Το {label} πρέπει να είναι μεταξύ {min}-{max}\",\n \"description\": \"Validation error for a number outside a range\"\n },\n \"uic.Form.arrayLen\": {\n \"defaultMessage\": \"Πρέπει να είναι {len} {label}\",\n \"description\": \"Validation error for a list with the wrong number of items\"\n },\n \"uic.Form.arrayMin\": {\n \"defaultMessage\": \"Τουλάχιστον {min} {label}\",\n \"description\": \"Validation error for a list with too few items\"\n },\n \"uic.Form.arrayMax\": {\n \"defaultMessage\": \"Το πολύ {max} {label}\",\n \"description\": \"Validation error for a list with too many items\"\n },\n \"uic.Form.arrayRange\": {\n \"defaultMessage\": \"Το ποσό του {label} πρέπει να είναι μεταξύ {min}-{max}\",\n \"description\": \"Validation error for a list whose item count is outside a range\"\n },\n \"uic.Form.patternMismatch\": {\n \"defaultMessage\": \"Το {label} δεν ταιριάζει με το μοτίβο {pattern}\",\n \"description\": \"Validation error for text that does not match a pattern\"\n },\n \"uic.BulkEditFormItem.keepAsIs\": {\n \"defaultMessage\": \"Διατήρηση ως έχει\",\n \"description\": \"Placeholder of a bulk-edit field that leaves every selected item's current value unchanged\"\n },\n \"uic.BulkEditFormItem.clear\": {\n \"defaultMessage\": \"Καθαρισμός\",\n \"description\": \"Link that clears the field on every selected item, and the field's placeholder once cleared\"\n },\n \"uic.BulkEditFormItem.undoChanges\": {\n \"defaultMessage\": \"Αναίρεση αλλαγών\",\n \"description\": \"Link that returns a bulk-edit field to keeping the current values\"\n },\n \"uic.BulkErrorModal.title\": {\n \"defaultMessage\": \"Η εκτέλεση απέτυχε\",\n \"description\": \"Default title of the dialog that lists the failed items of a bulk operation\"\n },\n \"uic.BulkErrorModal.errorOccurred\": {\n \"defaultMessage\": \"Παρουσιάστηκε σφάλμα\",\n \"description\": \"Title of the error banner above the failed items, over the caller's guidance\"\n },\n \"uic.DataGrid.noData\": {\n \"defaultMessage\": \"Δεν υπάρχουν δεδομένα για εμφάνιση\",\n \"description\": \"Shown in place of a data grid's rows when there are none\"\n },\n \"uic.DataGrid.invalidPage\": {\n \"defaultMessage\": \"Μη έγκυρος αριθμός σελίδας\",\n \"description\": \"Shown in place of a data grid's rows when the current page lies past the last page\"\n },\n \"uic.DataGrid.goToFirstPage\": {\n \"defaultMessage\": \"Μετάβαση στην πρώτη σελίδα\",\n \"description\": \"Button under the invalid page message that returns to page 1\"\n },\n \"uic.DataGrid.expandRow\": {\n \"defaultMessage\": \"Ανάπτυξη γραμμής\",\n \"description\": \"Accessible name of the button that shows or hides a row's details\"\n },\n \"uic.DataGrid.pagination\": {\n \"defaultMessage\": \"Σελιδοποίηση\",\n \"description\": \"Accessible name of a data grid's page navigation\"\n },\n \"uic.DataGrid.range\": {\n \"defaultMessage\": \"{start} - {end} των στοιχείων {total}\",\n \"description\": \"Beside a data grid's page navigation: the rows on screen out of the total. {start} and {end} are 1-based row numbers\"\n },\n \"uic.DataGrid.settings\": {\n \"defaultMessage\": \"Ρυθμίσεις πίνακα\",\n \"description\": \"Button under a data grid that opens its column settings, and the title of that dialog\"\n },\n \"uic.DataGrid.exportCsv\": {\n \"defaultMessage\": \"Εξαγωγή CSV\",\n \"description\": \"Button under a data grid that opens the CSV export dialog, and the title of that dialog\"\n },\n \"uic.DataGrid.selectColumns\": {\n \"defaultMessage\": \"Επιλέξτε στήλες για εμφάνιση\",\n \"description\": \"Subtitle of a data grid's column settings and CSV export dialogs\"\n },\n \"uic.DataGrid.searchColumns\": {\n \"defaultMessage\": \"Στήλες πίνακα αναζήτησης\",\n \"description\": \"Placeholder of the column search field in a data grid's dialogs, also shown when no column matches\"\n },\n \"uic.DataGrid.reorderColumn\": {\n \"defaultMessage\": \"Αναδιάταξη {column}\",\n \"description\": \"Accessible name of the drag handle beside a column in a data grid's column settings dialog. {column} is the column's label\"\n },\n \"uic.DataGrid.reorderInstructions\": {\n \"defaultMessage\": \"Πατήστε το πλήκτρο διαστήματος για να επιλέξετε τη στήλη, μετακινήστε τη με τα βελάκια και πατήστε ξανά το πλήκτρο διαστήματος για να την αφήσετε ή το Escape για ακύρωση.\",\n \"description\": \"Screen reader instructions for a drag handle in a data grid's column settings dialog\"\n },\n \"uic.DataGrid.reorderPickedUp\": {\n \"defaultMessage\": \"Επιλέχθηκε η στήλη {column}. Βρίσκεται στη θέση {position} από {total}.\",\n \"description\": \"Screen reader announcement when a column is picked up for reordering in the column settings dialog. {position} is 1-based\"\n },\n \"uic.DataGrid.reorderMoved\": {\n \"defaultMessage\": \"Η στήλη {column} μετακινήθηκε στη θέση {position} από {total}.\",\n \"description\": \"Screen reader announcement while a picked-up column moves in the column settings dialog. {position} is 1-based\"\n },\n \"uic.DataGrid.reorderDropped\": {\n \"defaultMessage\": \"Η στήλη {column} τοποθετήθηκε στη θέση {position} από {total}.\",\n \"description\": \"Screen reader announcement when a column is dropped in the column settings dialog. {position} is 1-based\"\n },\n \"uic.DataGrid.reorderCancelled\": {\n \"defaultMessage\": \"Η αναδιάταξη ακυρώθηκε. Η στήλη {column} επέστρεψε στη θέση {position} από {total}.\",\n \"description\": \"Screen reader announcement when reordering a column is cancelled in the column settings dialog. {position} is 1-based\"\n },\n \"uic.DataGrid.export\": {\n \"defaultMessage\": \"Εξαγωγή\",\n \"description\": \"Primary button of a data grid's CSV export dialog\"\n },\n \"uic.PagedSelector.placeholder\": {\n \"defaultMessage\": \"Επιλέξτε {label}\",\n \"description\": \"Placeholder of a selector with nothing selected; {label} is the field's label\"\n },\n \"uic.PagedSelector.searchOptions\": {\n \"defaultMessage\": \"Αναζήτηση επιλογών\",\n \"description\": \"Accessible name of the search box at the top of a selector's option list\"\n },\n \"uic.PagedSelector.searchPlaceholder\": {\n \"defaultMessage\": \"Αναζήτηση\",\n \"description\": \"Placeholder of the search box at the top of a selector's option list\"\n },\n \"uic.PagedSelector.clearSearch\": {\n \"defaultMessage\": \"Εκκαθάριση Αναζήτηση επιλογών\",\n \"description\": \"Accessible name of the button that empties a selector's search box\"\n },\n \"uic.PagedSelector.noResults\": {\n \"defaultMessage\": \"Δεν βρέθηκαν αποτελέσματα\",\n \"description\": \"Shown in a selector's option list when no option matches\"\n },\n \"uic.PagedSelector.loading\": {\n \"defaultMessage\": \"Φόρτωση...\",\n \"description\": \"Shown in a selector's empty option list while options are being fetched\"\n },\n \"uic.PagedSelector.totalItems\": {\n \"defaultMessage\": \"Σύνολο {total} στοιχεία\",\n \"description\": \"Foot of a selector's option list; {total} is how many options exist in all pages\"\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"el-GR.js","names":[],"sources":["../../../src/i18n/locales/el-GR.json"],"sourcesContent":["{\n \"uic.common.ok\": {\n \"defaultMessage\": \"OK\",\n \"description\": \"Generic label of a primary action button that accepts\"\n },\n \"uic.common.cancel\": {\n \"defaultMessage\": \"Άκυρο\",\n \"description\": \"Generic label of a button that backs out of an action or stops a task\"\n },\n \"uic.common.confirm\": {\n \"defaultMessage\": \"Επιβεβαίωση\",\n \"description\": \"Generic label of a button that confirms an action\"\n },\n \"uic.common.delete\": {\n \"defaultMessage\": \"Διαγραφή\",\n \"description\": \"Generic label of a button that deletes something\"\n },\n \"uic.common.retry\": {\n \"defaultMessage\": \"Επανάληψη\",\n \"description\": \"Generic label of a button that retries a failed action or load\"\n },\n \"uic.common.apply\": {\n \"defaultMessage\": \"Εφαρμογή\",\n \"description\": \"Generic label of a button that applies the changes made in a dialog\"\n },\n \"uic.Board.dragHandle\": {\n \"defaultMessage\": \"Λαβή μεταφοράς\",\n \"description\": \"Accessible name of the button at a board item's top-left corner that moves the item\"\n },\n \"uic.Board.resizeHandle\": {\n \"defaultMessage\": \"Λαβή αλλαγής μεγέθους\",\n \"description\": \"Accessible name of the button at a board item's bottom-right corner that resizes the item\"\n },\n \"uic.Board.moveStarted\": {\n \"defaultMessage\": \"Μεταφορά σε εξέλιξη.\",\n \"description\": \"Screen reader announcement when a board item is picked up to be moved\"\n },\n \"uic.Board.resizeStarted\": {\n \"defaultMessage\": \"Αλλαγή μεγέθους σε εξέλιξη.\",\n \"description\": \"Screen reader announcement when a board item starts being resized\"\n },\n \"uic.Board.itemMoved\": {\n \"defaultMessage\": \"Το στοιχείο μετακινήθηκε στη στήλη {column}, γραμμή {row}.\",\n \"description\": \"Screen reader announcement while a board item moves. {column} and {row} are 1-based\"\n },\n \"uic.Board.itemResized\": {\n \"defaultMessage\": \"Το μέγεθος του στοιχείου άλλαξε σε {columns} στήλες επί {rows} γραμμές.\",\n \"description\": \"Screen reader announcement while a board item is resized\"\n },\n \"uic.Board.moveCommitted\": {\n \"defaultMessage\": \"Η μετακίνηση εφαρμόστηκε.\",\n \"description\": \"Screen reader announcement when a board item is dropped in its new place\"\n },\n \"uic.Board.resizeCommitted\": {\n \"defaultMessage\": \"Η αλλαγή μεγέθους εφαρμόστηκε.\",\n \"description\": \"Screen reader announcement when a board item's new size is applied\"\n },\n \"uic.Board.moveDiscarded\": {\n \"defaultMessage\": \"Η μετακίνηση ακυρώθηκε.\",\n \"description\": \"Screen reader announcement when moving a board item is cancelled\"\n },\n \"uic.Board.resizeDiscarded\": {\n \"defaultMessage\": \"Η αλλαγή μεγέθους ακυρώθηκε.\",\n \"description\": \"Screen reader announcement when resizing a board item is cancelled\"\n },\n \"uic.Board.itemRemoved\": {\n \"defaultMessage\": \"Το στοιχείο αφαιρέθηκε.\",\n \"description\": \"Screen reader announcement when a board item is removed\"\n },\n \"uic.ColorPicker.label\": {\n \"defaultMessage\": \"Επιλογή χρώματος\",\n \"description\": \"Accessible name of a color picker whose caller gave it no label\"\n },\n \"uic.ColorPicker.hexValue\": {\n \"defaultMessage\": \"Δεκαεξαδική τιμή\",\n \"description\": \"Hidden label of the color picker's text field for a #rrggbb value\"\n },\n \"uic.ColorPicker.clear\": {\n \"defaultMessage\": \"Καθαρισμός\",\n \"description\": \"Button in a color picker that removes the chosen color\"\n },\n \"uic.ColorPicker.noColor\": {\n \"defaultMessage\": \"Χωρίς χρώμα\",\n \"description\": \"Shown on a color picker's trigger when no color is set\"\n },\n \"uic.DeleteConfirmModal.title\": {\n \"defaultMessage\": \"Διαγραφή\",\n \"description\": \"Title of the dialog that confirms deleting one item\"\n },\n \"uic.DeleteConfirmModal.titleMany\": {\n \"defaultMessage\": \"{count, plural, other {Διαγραφή # στοιχείων}}\",\n \"description\": \"Title of the dialog that confirms deleting several items; {count} is how many\"\n },\n \"uic.DeleteConfirmModal.description\": {\n \"defaultMessage\": \"Είστε σίγουροι ότι θέλετε να διαγράψετε;\",\n \"description\": \"Question above the list of items about to be deleted\"\n },\n \"uic.DeleteConfirmModal.targetDescription\": {\n \"defaultMessage\": \"Είστε βέβαιοι ότι θέλετε να διαγράψετε οριστικά {target};\",\n \"description\": \"Question above the list of items about to be deleted; {target} names the kind of item, e.g. Project\"\n },\n \"uic.DeleteConfirmModal.typeToConfirm\": {\n \"defaultMessage\": \"Πληκτρολογήστε {confirmText} για επιβεβαίωση.\",\n \"description\": \"Instruction above the confirmation field; {confirmText} is the text to type, shown as a token\"\n },\n \"uic.DeleteConfirmModal.confirmText\": {\n \"defaultMessage\": \"Διαγράφω\",\n \"description\": \"The word the user types to confirm deleting several items at once\"\n },\n \"uic.DeleteConfirmModal.cannotBeUndone\": {\n \"defaultMessage\": \"Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.\",\n \"description\": \"Warning that the deletion is permanent\"\n },\n \"uic.NumberStepper.increase\": {\n \"defaultMessage\": \"Αύξηση\",\n \"description\": \"Accessible name of the button that steps a number field up\"\n },\n \"uic.NumberStepper.decrease\": {\n \"defaultMessage\": \"Μείωση\",\n \"description\": \"Accessible name of the button that steps a number field down\"\n },\n \"uic.SelectionLabel.selectedCount\": {\n \"defaultMessage\": \"{count} Επιλεγμένη\",\n \"description\": \"How many items are selected, e.g. rows of a table; {count} is the number\"\n },\n \"uic.SelectionLabel.clear\": {\n \"defaultMessage\": \"Αποεπιλογή όλων\",\n \"description\": \"Button that clears the whole selection\"\n },\n \"uic.SkeletonCard.loading\": {\n \"defaultMessage\": \"Φόρτωση\",\n \"description\": \"Accessible name of a card-shaped loading placeholder\"\n },\n \"uic.SkeletonRow.loading\": {\n \"defaultMessage\": \"Φόρτωση\",\n \"description\": \"Accessible name of one list-row loading placeholder\"\n },\n \"uic.SkeletonText.loading\": {\n \"defaultMessage\": \"Φόρτωση\",\n \"description\": \"Accessible name of a text-block loading placeholder\"\n },\n \"uic.Statistic.unlimited\": {\n \"defaultMessage\": \"Απεριόριστος\",\n \"description\": \"Shown in place of a metric's value when the value has no limit\"\n },\n \"uic.TokenRow.more\": {\n \"defaultMessage\": \"και {count} ακόμη\",\n \"description\": \"After a row of tokens cut short, how many were left out; {count} is the number\"\n },\n \"uic.UncontrolledInput.label\": {\n \"defaultMessage\": \"Επιλογή\",\n \"description\": \"Hidden accessible name of an input whose caller gave it no label of its own\"\n },\n \"uic.UnitGrid.label\": {\n \"defaultMessage\": \"Πλέγμα πόρων\",\n \"description\": \"Accessible name of a unit grid whose caller gave it no aria-label\"\n },\n \"uic.UnitGrid.changeGroupColor\": {\n \"defaultMessage\": \"Αλλαγή χρώματος ομάδας\",\n \"description\": \"Button in a unit grid's hover card that opens the palette for the group\"\n },\n \"uic.UnitGrid.useColor\": {\n \"defaultMessage\": \"Χρήση χρώματος {index}\",\n \"description\": \"Accessible name of one palette swatch in a unit grid; {index} is its 1-based position\"\n },\n \"uic.Form.optional\": {\n \"defaultMessage\": \"(προαιρετικό)\",\n \"description\": \"Suffix after the label of an optional field when requiredMark=\\\"optional\\\"\"\n },\n \"uic.Form.default\": {\n \"defaultMessage\": \"Σφάλμα επικύρωσης πεδίου για {label}\",\n \"description\": \"Validation error when a rule failed without a more specific message\"\n },\n \"uic.Form.required\": {\n \"defaultMessage\": \"Παρακαλώ εισάγετε {label}\",\n \"description\": \"Validation error for an empty required field\"\n },\n \"uic.Form.whitespace\": {\n \"defaultMessage\": \"Το {label} δεν μπορεί να είναι κενός χαρακτήρας\",\n \"description\": \"Validation error for a required field that holds only whitespace\"\n },\n \"uic.Form.typeString\": {\n \"defaultMessage\": \"Το {label} δεν είναι έγκυρο {type}\",\n \"description\": \"Validation error for a value that is not a string; {type} is the type name\"\n },\n \"uic.Form.typeNumber\": {\n \"defaultMessage\": \"Το {label} δεν είναι έγκυρο {type}\",\n \"description\": \"Validation error for a value that is not a number; {type} is the type name\"\n },\n \"uic.Form.typeObject\": {\n \"defaultMessage\": \"Το {label} δεν είναι έγκυρο {type}\",\n \"description\": \"Validation error for a value that is not an object; {type} is the type name\"\n },\n \"uic.Form.typeEmail\": {\n \"defaultMessage\": \"Το {label} δεν είναι έγκυρο {type}\",\n \"description\": \"Validation error for an invalid email address; {type} is the type name\"\n },\n \"uic.Form.typeUrl\": {\n \"defaultMessage\": \"Το {label} δεν είναι έγκυρο {type}\",\n \"description\": \"Validation error for an invalid URL; {type} is the type name\"\n },\n \"uic.Form.stringLen\": {\n \"defaultMessage\": \"Το {label} πρέπει να είναι {len} χαρακτήρες\",\n \"description\": \"Validation error for text of the wrong exact length\"\n },\n \"uic.Form.stringMin\": {\n \"defaultMessage\": \"Το {label} πρέπει να είναι τουλάχιστον {min} χαρακτήρες\",\n \"description\": \"Validation error for text shorter than the minimum\"\n },\n \"uic.Form.stringMax\": {\n \"defaultMessage\": \"Το {label} πρέπει να είναι το πολύ {max} χαρακτήρες\",\n \"description\": \"Validation error for text longer than the maximum\"\n },\n \"uic.Form.stringRange\": {\n \"defaultMessage\": \"Το {label} πρέπει να είναι μεταξύ {min}-{max} χαρακτήρων\",\n \"description\": \"Validation error for text outside a length range\"\n },\n \"uic.Form.numberLen\": {\n \"defaultMessage\": \"Το {label} πρέπει να είναι ίσο με {len}\",\n \"description\": \"Validation error for a number that must equal a value\"\n },\n \"uic.Form.numberMin\": {\n \"defaultMessage\": \"Το {label} πρέπει να είναι τουλάχιστον {min}\",\n \"description\": \"Validation error for a number below the minimum\"\n },\n \"uic.Form.numberMax\": {\n \"defaultMessage\": \"Το {label} πρέπει να είναι το πολύ {max}\",\n \"description\": \"Validation error for a number above the maximum\"\n },\n \"uic.Form.numberRange\": {\n \"defaultMessage\": \"Το {label} πρέπει να είναι μεταξύ {min}-{max}\",\n \"description\": \"Validation error for a number outside a range\"\n },\n \"uic.Form.arrayLen\": {\n \"defaultMessage\": \"Πρέπει να είναι {len} {label}\",\n \"description\": \"Validation error for a list with the wrong number of items\"\n },\n \"uic.Form.arrayMin\": {\n \"defaultMessage\": \"Τουλάχιστον {min} {label}\",\n \"description\": \"Validation error for a list with too few items\"\n },\n \"uic.Form.arrayMax\": {\n \"defaultMessage\": \"Το πολύ {max} {label}\",\n \"description\": \"Validation error for a list with too many items\"\n },\n \"uic.Form.arrayRange\": {\n \"defaultMessage\": \"Το ποσό του {label} πρέπει να είναι μεταξύ {min}-{max}\",\n \"description\": \"Validation error for a list whose item count is outside a range\"\n },\n \"uic.Form.patternMismatch\": {\n \"defaultMessage\": \"Το {label} δεν ταιριάζει με το μοτίβο {pattern}\",\n \"description\": \"Validation error for text that does not match a pattern\"\n },\n \"uic.BulkEditFormItem.keepAsIs\": {\n \"defaultMessage\": \"Διατήρηση ως έχει\",\n \"description\": \"Placeholder of a bulk-edit field that leaves every selected item's current value unchanged\"\n },\n \"uic.BulkEditFormItem.clear\": {\n \"defaultMessage\": \"Καθαρισμός\",\n \"description\": \"Link that clears the field on every selected item, and the field's placeholder once cleared\"\n },\n \"uic.BulkEditFormItem.undoChanges\": {\n \"defaultMessage\": \"Αναίρεση αλλαγών\",\n \"description\": \"Link that returns a bulk-edit field to keeping the current values\"\n },\n \"uic.BulkErrorModal.title\": {\n \"defaultMessage\": \"Η εκτέλεση απέτυχε\",\n \"description\": \"Default title of the dialog that lists the failed items of a bulk operation\"\n },\n \"uic.BulkErrorModal.errorOccurred\": {\n \"defaultMessage\": \"Παρουσιάστηκε σφάλμα\",\n \"description\": \"Title of the error banner above the failed items, over the caller's guidance\"\n },\n \"uic.DataGrid.noData\": {\n \"defaultMessage\": \"Δεν υπάρχουν δεδομένα για εμφάνιση\",\n \"description\": \"Shown in place of a data grid's rows when there are none\"\n },\n \"uic.DataGrid.invalidPage\": {\n \"defaultMessage\": \"Μη έγκυρος αριθμός σελίδας\",\n \"description\": \"Shown in place of a data grid's rows when the current page lies past the last page\"\n },\n \"uic.DataGrid.goToFirstPage\": {\n \"defaultMessage\": \"Μετάβαση στην πρώτη σελίδα\",\n \"description\": \"Button under the invalid page message that returns to page 1\"\n },\n \"uic.DataGrid.expandRow\": {\n \"defaultMessage\": \"Ανάπτυξη γραμμής\",\n \"description\": \"Accessible name of the button that shows or hides a row's details\"\n },\n \"uic.DataGrid.pagination\": {\n \"defaultMessage\": \"Σελιδοποίηση\",\n \"description\": \"Accessible name of a data grid's page navigation\"\n },\n \"uic.DataGrid.range\": {\n \"defaultMessage\": \"{start} - {end} των στοιχείων {total}\",\n \"description\": \"Beside a data grid's page navigation: the rows on screen out of the total. {start} and {end} are 1-based row numbers\"\n },\n \"uic.DataGrid.settings\": {\n \"defaultMessage\": \"Ρυθμίσεις πίνακα\",\n \"description\": \"Button under a data grid that opens its column settings, and the title of that dialog\"\n },\n \"uic.DataGrid.exportCsv\": {\n \"defaultMessage\": \"Εξαγωγή CSV\",\n \"description\": \"Button under a data grid that opens the CSV export dialog, and the title of that dialog\"\n },\n \"uic.DataGrid.selectColumns\": {\n \"defaultMessage\": \"Επιλέξτε στήλες για εμφάνιση\",\n \"description\": \"Subtitle of a data grid's column settings and CSV export dialogs\"\n },\n \"uic.DataGrid.searchColumns\": {\n \"defaultMessage\": \"Στήλες πίνακα αναζήτησης\",\n \"description\": \"Placeholder of the column search field in a data grid's dialogs, also shown when no column matches\"\n },\n \"uic.DataGrid.reorderColumn\": {\n \"defaultMessage\": \"Αναδιάταξη {column}\",\n \"description\": \"Accessible name of the drag handle beside a column in a data grid's column settings dialog. {column} is the column's label\"\n },\n \"uic.DataGrid.reorderInstructions\": {\n \"defaultMessage\": \"Πατήστε το πλήκτρο διαστήματος για να επιλέξετε τη στήλη, μετακινήστε τη με τα βελάκια και πατήστε ξανά το πλήκτρο διαστήματος για να την αφήσετε ή το Escape για ακύρωση.\",\n \"description\": \"Screen reader instructions for a drag handle in a data grid's column settings dialog\"\n },\n \"uic.DataGrid.reorderPickedUp\": {\n \"defaultMessage\": \"Επιλέχθηκε η στήλη {column}. Βρίσκεται στη θέση {position} από {total}.\",\n \"description\": \"Screen reader announcement when a column is picked up for reordering in the column settings dialog. {position} is 1-based\"\n },\n \"uic.DataGrid.reorderMoved\": {\n \"defaultMessage\": \"Η στήλη {column} μετακινήθηκε στη θέση {position} από {total}.\",\n \"description\": \"Screen reader announcement while a picked-up column moves in the column settings dialog. {position} is 1-based\"\n },\n \"uic.DataGrid.reorderDropped\": {\n \"defaultMessage\": \"Η στήλη {column} τοποθετήθηκε στη θέση {position} από {total}.\",\n \"description\": \"Screen reader announcement when a column is dropped in the column settings dialog. {position} is 1-based\"\n },\n \"uic.DataGrid.reorderCancelled\": {\n \"defaultMessage\": \"Η αναδιάταξη ακυρώθηκε. Η στήλη {column} επέστρεψε στη θέση {position} από {total}.\",\n \"description\": \"Screen reader announcement when reordering a column is cancelled in the column settings dialog. {position} is 1-based\"\n },\n \"uic.DataGrid.export\": {\n \"defaultMessage\": \"Εξαγωγή\",\n \"description\": \"Primary button of a data grid's CSV export dialog\"\n },\n \"uic.PagedSelector.placeholder\": {\n \"defaultMessage\": \"Επιλέξτε {label}\",\n \"description\": \"Placeholder of a selector with nothing selected; {label} is the field's label\"\n },\n \"uic.PagedSelector.searchOptions\": {\n \"defaultMessage\": \"Αναζήτηση επιλογών\",\n \"description\": \"Accessible name of the search box at the top of a selector's option list\"\n },\n \"uic.PagedSelector.searchPlaceholder\": {\n \"defaultMessage\": \"Αναζήτηση\",\n \"description\": \"Placeholder of the search box at the top of a selector's option list\"\n },\n \"uic.PagedSelector.clearSearch\": {\n \"defaultMessage\": \"Εκκαθάριση Αναζήτηση επιλογών\",\n \"description\": \"Accessible name of the button that empties a selector's search box\"\n },\n \"uic.PagedSelector.noResults\": {\n \"defaultMessage\": \"Δεν βρέθηκαν αποτελέσματα\",\n \"description\": \"Shown in a selector's option list when no option matches\"\n },\n \"uic.PagedSelector.loading\": {\n \"defaultMessage\": \"Φόρτωση...\",\n \"description\": \"Shown in a selector's empty option list while options are being fetched\"\n },\n \"uic.PagedSelector.totalItems\": {\n \"defaultMessage\": \"Σύνολο {total} στοιχεία\",\n \"description\": \"Foot of a selector's option list; {total} is how many options exist in all pages\"\n },\n \"uic.Board.directionUp\": {\n \"defaultMessage\": \"Πάνω\",\n \"description\": \"Accessible name of the button that moves an activated board item, or shrinks a resized one, one row up\"\n },\n \"uic.Board.directionDown\": {\n \"defaultMessage\": \"Κάτω\",\n \"description\": \"Accessible name of the button that moves an activated board item, or grows a resized one, one row down\"\n },\n \"uic.Board.directionLeft\": {\n \"defaultMessage\": \"Αριστερά\",\n \"description\": \"Accessible name of the button that moves an activated board item, or shrinks a resized one, one column left\"\n },\n \"uic.Board.directionRight\": {\n \"defaultMessage\": \"Δεξιά\",\n \"description\": \"Accessible name of the button that moves an activated board item, or grows a resized one, one column right\"\n }\n}\n"],"mappings":""}