@kernhq/module-quire 0.14.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/contract/models.d.ts +209 -0
  2. package/dist/contract/models.d.ts.map +1 -1
  3. package/dist/contract/models.js +151 -0
  4. package/dist/contract/models.js.map +1 -1
  5. package/dist/contract/permissions.d.ts.map +1 -1
  6. package/dist/contract/permissions.js +32 -0
  7. package/dist/contract/permissions.js.map +1 -1
  8. package/dist/contract/properties.d.ts +3 -3
  9. package/dist/contract/router.d.ts +509 -8
  10. package/dist/contract/router.d.ts.map +1 -1
  11. package/dist/contract/router.js +211 -1
  12. package/dist/contract/router.js.map +1 -1
  13. package/dist/server/_impl.d.ts +573 -1269
  14. package/dist/server/_impl.d.ts.map +1 -1
  15. package/dist/server/_impl.js +180 -0
  16. package/dist/server/_impl.js.map +1 -1
  17. package/dist/server/export/markdown.d.ts.map +1 -1
  18. package/dist/server/export/markdown.js +84 -1
  19. package/dist/server/export/markdown.js.map +1 -1
  20. package/dist/server/render.d.ts +190 -1
  21. package/dist/server/render.d.ts.map +1 -1
  22. package/dist/server/render.js +413 -0
  23. package/dist/server/render.js.map +1 -1
  24. package/dist/server/schema.d.ts +260 -1
  25. package/dist/server/schema.d.ts.map +1 -1
  26. package/dist/server/schema.js +108 -1
  27. package/dist/server/schema.js.map +1 -1
  28. package/dist/server/services/databases.d.ts +5 -5
  29. package/dist/server/services/index.d.ts +6 -0
  30. package/dist/server/services/index.d.ts.map +1 -1
  31. package/dist/server/services/index.js +27 -3
  32. package/dist/server/services/index.js.map +1 -1
  33. package/dist/server/services/macros.d.ts +83 -0
  34. package/dist/server/services/macros.d.ts.map +1 -0
  35. package/dist/server/services/macros.js +488 -0
  36. package/dist/server/services/macros.js.map +1 -0
  37. package/dist/server/services/objects.d.ts +61 -0
  38. package/dist/server/services/objects.d.ts.map +1 -0
  39. package/dist/server/services/objects.js +110 -0
  40. package/dist/server/services/objects.js.map +1 -0
  41. package/dist/server/services/publications.d.ts +2 -1
  42. package/dist/server/services/publications.d.ts.map +1 -1
  43. package/dist/server/services/publications.js +43 -4
  44. package/dist/server/services/publications.js.map +1 -1
  45. package/dist/server/services/templates.d.ts +135 -0
  46. package/dist/server/services/templates.d.ts.map +1 -0
  47. package/dist/server/services/templates.js +897 -0
  48. package/dist/server/services/templates.js.map +1 -0
  49. package/dist/server/services/unfurl.d.ts +154 -0
  50. package/dist/server/services/unfurl.d.ts.map +1 -0
  51. package/dist/server/services/unfurl.js +593 -0
  52. package/dist/server/services/unfurl.js.map +1 -0
  53. package/dist/server/services/versions.d.ts +12 -0
  54. package/dist/server/services/versions.d.ts.map +1 -1
  55. package/dist/server/services/versions.js +3 -1
  56. package/dist/server/services/versions.js.map +1 -1
  57. package/migrations/0011_templates.sql +157 -0
  58. package/migrations/meta/_journal.json +7 -0
  59. package/package.json +5 -5
  60. package/src/client/components/NewSpaceDialog.svelte +77 -8
  61. package/src/client/components/PageEditor.svelte +80 -0
  62. package/src/client/components/PagePicker.svelte +264 -0
  63. package/src/client/components/SaveAsTemplateDialog.svelte +502 -0
  64. package/src/client/components/SidebarSpaces.svelte +33 -1
  65. package/src/client/components/TemplatePicker.svelte +437 -0
  66. package/src/client/i18n.ts +327 -0
  67. package/src/client/index.ts +19 -0
  68. package/src/client/mock.ts +274 -0
  69. package/src/client/pages/PageView.svelte +50 -0
  70. package/src/client/pages/SpacePage.svelte +20 -4
  71. package/src/client/query.ts +17 -0
  72. package/src/contract/models.ts +191 -0
  73. package/src/contract/permissions.ts +33 -0
  74. package/src/contract/router.ts +228 -0
@@ -643,6 +643,79 @@ export const en: Record<string, Message> = {
643
643
  'quire.transfer_hide_report': 'Hide report',
644
644
  'quire.cmd_transfers': 'Quire transfers',
645
645
  'quire.space_actions': 'Space actions',
646
+
647
+ /*
648
+ * Templates.
649
+ *
650
+ * The five Kern ships are constants on the *server* — their names, descriptions and prose are a
651
+ * table in `server/services/templates.ts`, resolved against the reader's locale, because
652
+ * `instantiate` is a procedure and has no `t()` to reach. So nothing below names a starter: these
653
+ * are the words around the picker, and the entries inside it arrive already translated.
654
+ */
655
+ 'quire.template_pick_title': 'Start a new page',
656
+ 'quire.template_pick_desc': 'Start from a template, or from nothing at all.',
657
+ 'quire.template_blank': 'Blank page',
658
+ 'quire.template_blank_desc': 'An empty page. The fastest thing to make.',
659
+ 'quire.template_section': 'Templates',
660
+ 'quire.template_error': 'The templates could not be loaded',
661
+ 'quire.template_error_desc': 'Try again in a moment.',
662
+ 'quire.template_customised': 'Yours',
663
+ 'quire.template_fill_title': 'Before this page is made',
664
+ 'quire.template_fill_desc': 'This template asks for a few things and fills them in for you.',
665
+ 'quire.template_create': 'Create page',
666
+ 'quire.template_back': 'Back to templates',
667
+ 'quire.template_required_missing': 'Fill this in first.',
668
+ 'quire.template_choose_option': 'Choose one',
669
+ 'quire.template_menu': 'Save as a template',
670
+ 'quire.template_save_title': 'Save as a template',
671
+ 'quire.template_save_desc':
672
+ 'What is written here becomes the body of a template anybody in this workspace can start from.',
673
+ 'quire.template_name': 'Name',
674
+ 'quire.template_name_hint': 'Weekly review',
675
+ 'quire.template_desc_label': 'What it is for',
676
+ 'quire.template_scope': 'Where it is offered',
677
+ 'quire.template_scope_space': 'Only in {space}',
678
+ 'quire.template_scope_workspace': 'Everywhere in this workspace',
679
+ 'quire.template_source': 'What to save',
680
+ 'quire.template_source_page': 'This page',
681
+ 'quire.template_source_space': 'This whole space',
682
+ 'quire.template_fields': 'Ask for',
683
+ 'quire.template_fields_hint':
684
+ 'Write a name in double braces in the page, and whatever somebody types replaces it.',
685
+ 'quire.template_field_add': 'Add a field',
686
+ 'quire.template_field_remove': 'Remove {label}',
687
+ 'quire.template_field_name': 'Name in the page',
688
+ 'quire.template_field_name_invalid': 'Lowercase letters, digits and underscores.',
689
+ 'quire.template_field_name_reserved': 'Quire fills this name in itself.',
690
+ 'quire.template_field_name_twice': 'Two fields cannot share a name.',
691
+ 'quire.template_field_label': 'What to ask',
692
+ 'quire.template_field_type': 'Kind',
693
+ 'quire.template_field_required': 'Needed',
694
+ 'quire.template_field_options': 'Choices',
695
+ 'quire.template_field_options_hint': 'One per line.',
696
+ 'quire.template_type_text': 'Text',
697
+ 'quire.template_type_number': 'Number',
698
+ 'quire.template_type_date': 'Date',
699
+ 'quire.template_type_select': 'One of a list',
700
+ 'quire.template_type_user': 'A person',
701
+ 'quire.template_save': 'Save template',
702
+ 'quire.template_saving': 'Saving…',
703
+ 'quire.template_replace': 'Replace a template Kern ships',
704
+ 'quire.template_replace_hint':
705
+ 'This workspace sees yours instead. Delete it and the shipped one comes back.',
706
+ 'quire.template_replace_none': 'None — a new template',
707
+ 'quire.template_new_space_from': 'Start from',
708
+ 'quire.template_new_space_blank': 'An empty space',
709
+ 'quire.template_target': 'Save as',
710
+ 'quire.template_target_new': 'A new template',
711
+ 'quire.template_update': 'Update template',
712
+ 'quire.template_delete': 'Delete {name}',
713
+ 'quire.template_reset': 'Put the shipped {name} back',
714
+ 'quire.template_delete_title': 'Delete this template?',
715
+ 'quire.template_reset_title': 'Go back to the shipped template?',
716
+ 'quire.template_delete_body': 'Pages already made from “{name}” are not touched.',
717
+ 'quire.template_delete_confirm': 'Delete',
718
+ 'quire.template_reset_confirm': 'Reset',
646
719
  }
647
720
 
648
721
  export type QuireMessageKey = keyof typeof en
@@ -1302,6 +1375,68 @@ const ar: Record<string, Message> = {
1302
1375
  'quire.transfer_hide_report': 'إخفاء التقرير',
1303
1376
  'quire.cmd_transfers': 'عمليات نقل Quire',
1304
1377
  'quire.space_actions': 'إجراءات المساحة',
1378
+
1379
+ 'quire.template_pick_title': 'ابدأ صفحة جديدة',
1380
+ 'quire.template_pick_desc': 'ابدأ من قالب، أو من لا شيء.',
1381
+ 'quire.template_blank': 'صفحة فارغة',
1382
+ 'quire.template_blank_desc': 'صفحة خالية. أسرع ما يمكن إنشاؤه.',
1383
+ 'quire.template_section': 'القوالب',
1384
+ 'quire.template_error': 'تعذّر تحميل القوالب',
1385
+ 'quire.template_error_desc': 'حاول بعد لحظة.',
1386
+ 'quire.template_customised': 'قالبكم',
1387
+ 'quire.template_fill_title': 'قبل إنشاء الصفحة',
1388
+ 'quire.template_fill_desc': 'يطلب هذا القالب بعض المعلومات ويملؤها نيابةً عنك.',
1389
+ 'quire.template_create': 'إنشاء الصفحة',
1390
+ 'quire.template_back': 'العودة إلى القوالب',
1391
+ 'quire.template_required_missing': 'املأ هذا أولًا.',
1392
+ 'quire.template_choose_option': 'اختر واحدًا',
1393
+ 'quire.template_menu': 'حفظ كقالب',
1394
+ 'quire.template_save_title': 'حفظ كقالب',
1395
+ 'quire.template_save_desc': 'يصبح ما هو مكتوب هنا متن قالب يمكن لأي شخص في مساحة العمل البدء منه.',
1396
+ 'quire.template_name': 'الاسم',
1397
+ 'quire.template_name_hint': 'مراجعة أسبوعية',
1398
+ 'quire.template_desc_label': 'الغرض منه',
1399
+ 'quire.template_scope': 'أين يُعرض',
1400
+ 'quire.template_scope_space': 'في {space} فقط',
1401
+ 'quire.template_scope_workspace': 'في كل مساحة العمل',
1402
+ 'quire.template_source': 'ما الذي يُحفظ',
1403
+ 'quire.template_source_page': 'هذه الصفحة',
1404
+ 'quire.template_source_space': 'هذه المساحة كلها',
1405
+ 'quire.template_fields': 'اطلب',
1406
+ 'quire.template_fields_hint': 'اكتب اسمًا بين قوسين معقوفين مزدوجين في الصفحة، ويحل محله ما يكتبه الشخص.',
1407
+ 'quire.template_field_add': 'إضافة حقل',
1408
+ 'quire.template_field_remove': 'إزالة {label}',
1409
+ 'quire.template_field_name': 'الاسم داخل الصفحة',
1410
+ 'quire.template_field_name_invalid': 'حروف صغيرة وأرقام وشرطات سفلية.',
1411
+ 'quire.template_field_name_reserved': 'يملأ Quire هذا الاسم بنفسه.',
1412
+ 'quire.template_field_name_twice': 'لا يمكن أن يحمل حقلان الاسم نفسه.',
1413
+ 'quire.template_field_label': 'ما الذي نسأل عنه',
1414
+ 'quire.template_field_type': 'النوع',
1415
+ 'quire.template_field_required': 'مطلوب',
1416
+ 'quire.template_field_options': 'الخيارات',
1417
+ 'quire.template_field_options_hint': 'خيار في كل سطر.',
1418
+ 'quire.template_type_text': 'نص',
1419
+ 'quire.template_type_number': 'رقم',
1420
+ 'quire.template_type_date': 'تاريخ',
1421
+ 'quire.template_type_select': 'واحد من قائمة',
1422
+ 'quire.template_type_user': 'شخص',
1423
+ 'quire.template_save': 'حفظ القالب',
1424
+ 'quire.template_saving': 'يُحفظ…',
1425
+ 'quire.template_replace': 'استبدال قالب تشحنه Kern',
1426
+ 'quire.template_replace_hint': 'ترى مساحة العمل قالبكم بدلًا منه. احذفه ليعود القالب الأصلي.',
1427
+ 'quire.template_replace_none': 'لا شيء — قالب جديد',
1428
+ 'quire.template_new_space_from': 'ابدأ من',
1429
+ 'quire.template_new_space_blank': 'مساحة فارغة',
1430
+ 'quire.template_target': 'احفظ باسم',
1431
+ 'quire.template_target_new': 'قالب جديد',
1432
+ 'quire.template_update': 'تحديث القالب',
1433
+ 'quire.template_delete': 'حذف {name}',
1434
+ 'quire.template_reset': 'إعادة {name} الأصلي',
1435
+ 'quire.template_delete_title': 'حذف هذا القالب؟',
1436
+ 'quire.template_reset_title': 'العودة إلى القالب الأصلي؟',
1437
+ 'quire.template_delete_body': 'لن تتأثر الصفحات التي أُنشئت من «{name}» من قبل.',
1438
+ 'quire.template_delete_confirm': 'حذف',
1439
+ 'quire.template_reset_confirm': 'إعادة',
1305
1440
  }
1306
1441
 
1307
1442
  const de: Record<string, Message> = {
@@ -1933,6 +2068,71 @@ const de: Record<string, Message> = {
1933
2068
  'quire.transfer_hide_report': 'Bericht ausblenden',
1934
2069
  'quire.cmd_transfers': 'Quire-Transfers',
1935
2070
  'quire.space_actions': 'Bereichsaktionen',
2071
+
2072
+ 'quire.template_pick_title': 'Neue Seite beginnen',
2073
+ 'quire.template_pick_desc': 'Von einer Vorlage aus – oder von nichts.',
2074
+ 'quire.template_blank': 'Leere Seite',
2075
+ 'quire.template_blank_desc': 'Eine leere Seite. Das Schnellste.',
2076
+ 'quire.template_section': 'Vorlagen',
2077
+ 'quire.template_error': 'Die Vorlagen konnten nicht geladen werden',
2078
+ 'quire.template_error_desc': 'Versuchen Sie es gleich noch einmal.',
2079
+ 'quire.template_customised': 'Ihre',
2080
+ 'quire.template_fill_title': 'Bevor die Seite entsteht',
2081
+ 'quire.template_fill_desc': 'Diese Vorlage fragt ein paar Dinge ab und setzt sie ein.',
2082
+ 'quire.template_create': 'Seite anlegen',
2083
+ 'quire.template_back': 'Zurück zu den Vorlagen',
2084
+ 'quire.template_required_missing': 'Bitte zuerst ausfüllen.',
2085
+ 'quire.template_choose_option': 'Bitte wählen',
2086
+ 'quire.template_menu': 'Als Vorlage speichern',
2087
+ 'quire.template_save_title': 'Als Vorlage speichern',
2088
+ 'quire.template_save_desc':
2089
+ 'Was hier steht, wird der Text einer Vorlage, mit der alle im Arbeitsbereich beginnen können.',
2090
+ 'quire.template_name': 'Name',
2091
+ 'quire.template_name_hint': 'Wochenrückblick',
2092
+ 'quire.template_desc_label': 'Wofür sie da ist',
2093
+ 'quire.template_scope': 'Wo sie angeboten wird',
2094
+ 'quire.template_scope_space': 'Nur in {space}',
2095
+ 'quire.template_scope_workspace': 'Überall in diesem Arbeitsbereich',
2096
+ 'quire.template_source': 'Was gespeichert wird',
2097
+ 'quire.template_source_page': 'Diese Seite',
2098
+ 'quire.template_source_space': 'Dieser ganze Bereich',
2099
+ 'quire.template_fields': 'Abfragen',
2100
+ 'quire.template_fields_hint':
2101
+ 'Schreiben Sie einen Namen in doppelte geschweifte Klammern; was jemand eingibt, ersetzt ihn.',
2102
+ 'quire.template_field_add': 'Feld hinzufügen',
2103
+ 'quire.template_field_remove': '{label} entfernen',
2104
+ 'quire.template_field_name': 'Name auf der Seite',
2105
+ 'quire.template_field_name_invalid': 'Kleinbuchstaben, Ziffern und Unterstriche.',
2106
+ 'quire.template_field_name_reserved': 'Diesen Namen setzt Quire selbst ein.',
2107
+ 'quire.template_field_name_twice': 'Zwei Felder können nicht denselben Namen haben.',
2108
+ 'quire.template_field_label': 'Wonach gefragt wird',
2109
+ 'quire.template_field_type': 'Art',
2110
+ 'quire.template_field_required': 'Pflichtfeld',
2111
+ 'quire.template_field_options': 'Auswahl',
2112
+ 'quire.template_field_options_hint': 'Eine pro Zeile.',
2113
+ 'quire.template_type_text': 'Text',
2114
+ 'quire.template_type_number': 'Zahl',
2115
+ 'quire.template_type_date': 'Datum',
2116
+ 'quire.template_type_select': 'Eines aus einer Liste',
2117
+ 'quire.template_type_user': 'Eine Person',
2118
+ 'quire.template_save': 'Vorlage speichern',
2119
+ 'quire.template_saving': 'Wird gespeichert…',
2120
+ 'quire.template_replace': 'Eine mitgelieferte Vorlage ersetzen',
2121
+ 'quire.template_replace_hint':
2122
+ 'Der Arbeitsbereich sieht Ihre statt der mitgelieferten. Löschen Sie sie, und die Originalvorlage ist zurück.',
2123
+ 'quire.template_replace_none': 'Keine – eine neue Vorlage',
2124
+ 'quire.template_new_space_from': 'Beginnen mit',
2125
+ 'quire.template_new_space_blank': 'Ein leerer Bereich',
2126
+ 'quire.template_target': 'Speichern als',
2127
+ 'quire.template_target_new': 'Eine neue Vorlage',
2128
+ 'quire.template_update': 'Vorlage aktualisieren',
2129
+ 'quire.template_delete': '{name} löschen',
2130
+ 'quire.template_reset': 'Mitgelieferte {name} zurückholen',
2131
+ 'quire.template_delete_title': 'Diese Vorlage löschen?',
2132
+ 'quire.template_reset_title': 'Zur mitgelieferten Vorlage zurück?',
2133
+ 'quire.template_delete_body': 'Seiten, die bereits aus „{name}“ entstanden sind, bleiben unberührt.',
2134
+ 'quire.template_delete_confirm': 'Löschen',
2135
+ 'quire.template_reset_confirm': 'Zurücksetzen',
1936
2136
  }
1937
2137
 
1938
2138
  const fa: Record<string, Message> = {
@@ -2537,6 +2737,69 @@ const fa: Record<string, Message> = {
2537
2737
  'quire.transfer_hide_report': 'پنهان کردن گزارش',
2538
2738
  'quire.cmd_transfers': 'انتقال‌های Quire',
2539
2739
  'quire.space_actions': 'کنش‌های فضا',
2740
+
2741
+ 'quire.template_pick_title': 'آغاز صفحهٔ تازه',
2742
+ 'quire.template_pick_desc': 'از یک الگو شروع کنید، یا از هیچ.',
2743
+ 'quire.template_blank': 'صفحهٔ خالی',
2744
+ 'quire.template_blank_desc': 'یک صفحهٔ خالی. سریع‌ترین چیزی که می‌شود ساخت.',
2745
+ 'quire.template_section': 'الگوها',
2746
+ 'quire.template_error': 'الگوها بارگذاری نشد',
2747
+ 'quire.template_error_desc': 'کمی بعد دوباره تلاش کنید.',
2748
+ 'quire.template_customised': 'از خودتان',
2749
+ 'quire.template_fill_title': 'پیش از ساخته‌شدن صفحه',
2750
+ 'quire.template_fill_desc': 'این الگو چند چیز می‌پرسد و آن‌ها را جای شما پر می‌کند.',
2751
+ 'quire.template_create': 'ساخت صفحه',
2752
+ 'quire.template_back': 'بازگشت به الگوها',
2753
+ 'quire.template_required_missing': 'اول این را پر کنید.',
2754
+ 'quire.template_choose_option': 'یکی را انتخاب کنید',
2755
+ 'quire.template_menu': 'ذخیره به‌عنوان الگو',
2756
+ 'quire.template_save_title': 'ذخیره به‌عنوان الگو',
2757
+ 'quire.template_save_desc':
2758
+ 'آنچه اینجا نوشته شده متن الگویی می‌شود که هر کس در این فضای کاری می‌تواند از آن شروع کند.',
2759
+ 'quire.template_name': 'نام',
2760
+ 'quire.template_name_hint': 'مرور هفتگی',
2761
+ 'quire.template_desc_label': 'برای چه کاری است',
2762
+ 'quire.template_scope': 'کجا پیشنهاد شود',
2763
+ 'quire.template_scope_space': 'فقط در {space}',
2764
+ 'quire.template_scope_workspace': 'همه‌جای این فضای کاری',
2765
+ 'quire.template_source': 'چه چیزی ذخیره شود',
2766
+ 'quire.template_source_page': 'همین صفحه',
2767
+ 'quire.template_source_space': 'همهٔ این فضا',
2768
+ 'quire.template_fields': 'بپرس',
2769
+ 'quire.template_fields_hint': 'نامی را در صفحه میان دو جفت آکولاد بنویسید؛ هرچه کسی تایپ کند جایش می‌نشیند.',
2770
+ 'quire.template_field_add': 'افزودن فیلد',
2771
+ 'quire.template_field_remove': 'حذف {label}',
2772
+ 'quire.template_field_name': 'نام درون صفحه',
2773
+ 'quire.template_field_name_invalid': 'حروف کوچک، رقم و زیرخط.',
2774
+ 'quire.template_field_name_reserved': 'Quire خودش این نام را پر می‌کند.',
2775
+ 'quire.template_field_name_twice': 'دو فیلد نمی‌توانند یک نام داشته باشند.',
2776
+ 'quire.template_field_label': 'چه پرسیده شود',
2777
+ 'quire.template_field_type': 'گونه',
2778
+ 'quire.template_field_required': 'لازم',
2779
+ 'quire.template_field_options': 'گزینه‌ها',
2780
+ 'quire.template_field_options_hint': 'هر خط یکی.',
2781
+ 'quire.template_type_text': 'متن',
2782
+ 'quire.template_type_number': 'عدد',
2783
+ 'quire.template_type_date': 'تاریخ',
2784
+ 'quire.template_type_select': 'یکی از فهرست',
2785
+ 'quire.template_type_user': 'یک نفر',
2786
+ 'quire.template_save': 'ذخیرهٔ الگو',
2787
+ 'quire.template_saving': 'در حال ذخیره…',
2788
+ 'quire.template_replace': 'جایگزینی الگویی که Kern می‌فرستد',
2789
+ 'quire.template_replace_hint': 'این فضای کاری الگوی شما را می‌بیند. با حذف آن، الگوی اصلی برمی‌گردد.',
2790
+ 'quire.template_replace_none': 'هیچ‌کدام — الگوی تازه',
2791
+ 'quire.template_new_space_from': 'شروع از',
2792
+ 'quire.template_new_space_blank': 'یک فضای خالی',
2793
+ 'quire.template_target': 'ذخیره به‌صورت',
2794
+ 'quire.template_target_new': 'یک الگوی تازه',
2795
+ 'quire.template_update': 'به‌روزرسانی الگو',
2796
+ 'quire.template_delete': 'حذف {name}',
2797
+ 'quire.template_reset': 'بازگرداندن {name} اصلی',
2798
+ 'quire.template_delete_title': 'این الگو حذف شود؟',
2799
+ 'quire.template_reset_title': 'به الگوی اصلی برگردیم؟',
2800
+ 'quire.template_delete_body': 'صفحه‌هایی که پیش‌تر از «{name}» ساخته شده‌اند دست‌نخورده می‌مانند.',
2801
+ 'quire.template_delete_confirm': 'حذف',
2802
+ 'quire.template_reset_confirm': 'بازگرداندن',
2540
2803
  }
2541
2804
 
2542
2805
  const tr: Record<string, Message> = {
@@ -3150,6 +3413,70 @@ const tr: Record<string, Message> = {
3150
3413
  'quire.transfer_hide_report': 'Raporu gizle',
3151
3414
  'quire.cmd_transfers': 'Quire aktarımları',
3152
3415
  'quire.space_actions': 'Alan işlemleri',
3416
+
3417
+ 'quire.template_pick_title': 'Yeni sayfaya başla',
3418
+ 'quire.template_pick_desc': 'Bir şablondan başlayın ya da hiçten.',
3419
+ 'quire.template_blank': 'Boş sayfa',
3420
+ 'quire.template_blank_desc': 'Boş bir sayfa. En hızlısı.',
3421
+ 'quire.template_section': 'Şablonlar',
3422
+ 'quire.template_error': 'Şablonlar yüklenemedi',
3423
+ 'quire.template_error_desc': 'Birazdan yeniden deneyin.',
3424
+ 'quire.template_customised': 'Sizinki',
3425
+ 'quire.template_fill_title': 'Sayfa oluşmadan önce',
3426
+ 'quire.template_fill_desc': 'Bu şablon birkaç şey sorar ve sizin yerinize doldurur.',
3427
+ 'quire.template_create': 'Sayfayı oluştur',
3428
+ 'quire.template_back': 'Şablonlara dön',
3429
+ 'quire.template_required_missing': 'Önce bunu doldurun.',
3430
+ 'quire.template_choose_option': 'Birini seçin',
3431
+ 'quire.template_menu': 'Şablon olarak kaydet',
3432
+ 'quire.template_save_title': 'Şablon olarak kaydet',
3433
+ 'quire.template_save_desc':
3434
+ 'Burada yazan, çalışma alanındaki herkesin başlayabileceği bir şablonun gövdesi olur.',
3435
+ 'quire.template_name': 'Ad',
3436
+ 'quire.template_name_hint': 'Haftalık değerlendirme',
3437
+ 'quire.template_desc_label': 'Ne işe yarar',
3438
+ 'quire.template_scope': 'Nerede sunulur',
3439
+ 'quire.template_scope_space': 'Yalnızca {space} içinde',
3440
+ 'quire.template_scope_workspace': 'Bu çalışma alanının her yerinde',
3441
+ 'quire.template_source': 'Ne kaydedilecek',
3442
+ 'quire.template_source_page': 'Bu sayfa',
3443
+ 'quire.template_source_space': 'Bu alanın tamamı',
3444
+ 'quire.template_fields': 'Sorulacaklar',
3445
+ 'quire.template_fields_hint':
3446
+ 'Sayfaya çift süslü parantez içinde bir ad yazın; birinin yazdığı onun yerine geçer.',
3447
+ 'quire.template_field_add': 'Alan ekle',
3448
+ 'quire.template_field_remove': '{label} alanını kaldır',
3449
+ 'quire.template_field_name': 'Sayfadaki adı',
3450
+ 'quire.template_field_name_invalid': 'Küçük harf, rakam ve alt çizgi.',
3451
+ 'quire.template_field_name_reserved': 'Bu adı Quire kendisi dolduruyor.',
3452
+ 'quire.template_field_name_twice': 'İki alan aynı adı taşıyamaz.',
3453
+ 'quire.template_field_label': 'Ne sorulacak',
3454
+ 'quire.template_field_type': 'Tür',
3455
+ 'quire.template_field_required': 'Zorunlu',
3456
+ 'quire.template_field_options': 'Seçenekler',
3457
+ 'quire.template_field_options_hint': 'Her satıra bir tane.',
3458
+ 'quire.template_type_text': 'Metin',
3459
+ 'quire.template_type_number': 'Sayı',
3460
+ 'quire.template_type_date': 'Tarih',
3461
+ 'quire.template_type_select': 'Listeden biri',
3462
+ 'quire.template_type_user': 'Bir kişi',
3463
+ 'quire.template_save': 'Şablonu kaydet',
3464
+ 'quire.template_saving': 'Kaydediliyor…',
3465
+ 'quire.template_replace': 'Kern’in gönderdiği bir şablonu değiştir',
3466
+ 'quire.template_replace_hint': 'Çalışma alanı sizinkini görür. Silerseniz gönderilen şablon geri gelir.',
3467
+ 'quire.template_replace_none': 'Yok — yeni bir şablon',
3468
+ 'quire.template_new_space_from': 'Şuradan başla',
3469
+ 'quire.template_new_space_blank': 'Boş bir alan',
3470
+ 'quire.template_target': 'Şu şekilde kaydet',
3471
+ 'quire.template_target_new': 'Yeni bir şablon',
3472
+ 'quire.template_update': 'Şablonu güncelle',
3473
+ 'quire.template_delete': '{name} şablonunu sil',
3474
+ 'quire.template_reset': 'Gönderilen {name} şablonunu geri getir',
3475
+ 'quire.template_delete_title': 'Bu şablon silinsin mi?',
3476
+ 'quire.template_reset_title': 'Gönderilen şablona dönülsün mü?',
3477
+ 'quire.template_delete_body': '“{name}” şablonundan daha önce oluşturulan sayfalara dokunulmaz.',
3478
+ 'quire.template_delete_confirm': 'Sil',
3479
+ 'quire.template_reset_confirm': 'Geri al',
3153
3480
  }
3154
3481
 
3155
3482
  /** In the shape `defineClientModule().messages` expects. */
@@ -58,6 +58,25 @@ export {
58
58
  type RecentView,
59
59
  type Space,
60
60
  type SpaceVisibility,
61
+ TEMPLATE_BUILT_IN_VARIABLES,
62
+ TEMPLATE_STARTER_KEYS,
63
+ type Template,
64
+ /**
65
+ * A picker row: a shipped starter, or a template somebody saved.
66
+ *
67
+ * Exported because a screen outside this package will want to draw one — the "New page" picker
68
+ * lives here, but a dashboard widget offering "start a meeting note" is the obvious next thing,
69
+ * and it should read the shape from here rather than restate it.
70
+ */
71
+ type TemplateChoice,
72
+ type TemplateKind,
73
+ type TemplateResult,
74
+ type TemplateSpaceBody,
75
+ type TemplateSpaceNode,
76
+ type TemplateStarterKey,
77
+ type TemplateSummary,
78
+ type TemplateVariable,
79
+ type TemplateVariableType,
61
80
  type TransferCounts,
62
81
  type TransferState,
63
82
  type VersionKind,