@morphemecms/cms 0.11.0 → 0.13.0-next-20261106203613

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 (186) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/astro.mjs +2 -1
  3. package/defaults/blockTexts.ts +9 -9
  4. package/defaults/collections.ts +257 -257
  5. package/defaults/colors.ts +74 -74
  6. package/defaults/company.ts +9 -9
  7. package/defaults/editor.ts +65 -65
  8. package/defaults/i18n/da-DK/blockTexts.ts +12 -0
  9. package/defaults/i18n/da-DK/collections.ts +220 -0
  10. package/defaults/i18n/da-DK/colors.ts +102 -0
  11. package/defaults/i18n/da-DK/company.ts +7 -0
  12. package/defaults/i18n/da-DK/editor.ts +13 -0
  13. package/defaults/i18n/da-DK/index.ts +31 -0
  14. package/defaults/i18n/da-DK/internalLinks.ts +12 -0
  15. package/defaults/i18n/da-DK/opens.ts +7 -0
  16. package/defaults/i18n/da-DK/popup.ts +9 -0
  17. package/defaults/i18n/da-DK/privacy.ts +38 -0
  18. package/defaults/i18n/da-DK/rules.ts +56 -0
  19. package/defaults/i18n/da-DK/sitedata.ts +8 -0
  20. package/defaults/i18n/da-DK/standard.ts +8 -0
  21. package/defaults/i18n/da-DK/standardPages.ts +17 -0
  22. package/defaults/internalLinks.ts +8 -8
  23. package/defaults/opens.ts +2 -2
  24. package/defaults/popup.tsx +7 -7
  25. package/defaults/privacy.ts +37 -37
  26. package/defaults/rules.ts +68 -66
  27. package/defaults/schema.ts +1 -1
  28. package/defaults/sitedata.ts +4 -4
  29. package/defaults/standard.ts +9 -6
  30. package/defaults/standardPages.ts +14 -14
  31. package/defaults/texts.ts +7 -510
  32. package/lib/appId.d.mts +1 -0
  33. package/lib/appId.mjs +6 -0
  34. package/lib/appRoute.d.mts +2 -2
  35. package/lib/appRoute.mjs +3 -3
  36. package/lib/appRoute.test.mjs +8 -8
  37. package/lib/apps.mjs +13 -3
  38. package/lib/apps.test.mjs +10 -1
  39. package/lib/contracts.d.mts +3 -2
  40. package/lib/contracts.mjs +3 -2
  41. package/lib/folderChanges.d.mts +29 -0
  42. package/lib/folderChanges.mjs +34 -0
  43. package/lib/licenses.mjs +2 -2
  44. package/lib/licenses.owner.test.mjs +9 -0
  45. package/lib/menu.mjs +4 -4
  46. package/lib/menu.test.mjs +101 -101
  47. package/lib/scheduled.mjs +1 -1
  48. package/lib/section-ranges.d.mts +1 -1
  49. package/lib/section-ranges.mjs +8 -14
  50. package/lib/section-ranges.test.mjs +26 -5
  51. package/lib/storeEntries.d.mts +3 -1
  52. package/lib/storeEntries.mjs +22 -8
  53. package/lib/storeEntries.test.mjs +59 -7
  54. package/lib/text-sections.d.mts +11 -1
  55. package/lib/text-sections.mjs +18 -8
  56. package/lib/text-sections.test.mjs +34 -1
  57. package/lib/translate.d.mts +11 -0
  58. package/lib/translate.mjs +13 -1
  59. package/lib/translate.test.mjs +23 -2
  60. package/lib/video-id.d.mts +6 -2
  61. package/lib/video-id.mjs +5 -1
  62. package/lib/video.d.mts +6 -2
  63. package/lib/video.mjs +5 -1
  64. package/lib/without-h1.d.mts +1 -0
  65. package/lib/without-h1.mjs +19 -4
  66. package/lib/without-h1.test.mjs +30 -1
  67. package/package.json +3 -2
  68. package/scripts/app-screenshots.mjs +9 -8
  69. package/scripts/check-content.mjs +12 -2
  70. package/scripts/check-language.mjs +0 -1
  71. package/scripts/check-site-types.mjs +26 -0
  72. package/scripts/editor-screens.mjs +3 -3
  73. package/scripts/site-types.mjs +14 -0
  74. package/scripts/site-types.test.mjs +21 -0
  75. package/site/activeTheme.test.mjs +52 -0
  76. package/site/appSelf.d.mts +2 -0
  77. package/site/appSelf.mjs +23 -0
  78. package/site/appSelf.test.mjs +35 -0
  79. package/site/content.ts +5 -2
  80. package/site/defineSite.mjs +2 -2
  81. package/site/schema.ts +3 -3
  82. package/site/siteModules.mjs +2 -1
  83. package/site/theme.mjs +19 -8
  84. package/src/Advanced.tsx +2 -2
  85. package/src/App.tsx +79 -78
  86. package/src/AppAdds.tsx +1 -1
  87. package/src/AppList.tsx +39 -24
  88. package/src/BlockDialog.tsx +39 -18
  89. package/src/BlockParts.tsx +6 -6
  90. package/src/BlockSettings.tsx +2 -2
  91. package/src/BrandForm.tsx +2 -2
  92. package/src/Colors.tsx +6 -6
  93. package/src/CompanyForm.tsx +1 -1
  94. package/src/Consents.tsx +3 -3
  95. package/src/CreateFab.tsx +8 -0
  96. package/src/DataForm.tsx +10 -20
  97. package/src/Deleted.tsx +3 -3
  98. package/src/EditorFooter.tsx +2 -2
  99. package/src/EntryForm.tsx +3 -3
  100. package/src/FooterSettings.tsx +2 -2
  101. package/src/FormFrame.tsx +4 -3
  102. package/src/HeaderSettings.tsx +3 -3
  103. package/src/Keywords.tsx +5 -5
  104. package/src/Library.tsx +75 -82
  105. package/src/Licenses.tsx +8 -8
  106. package/src/ListFab.tsx +13 -0
  107. package/src/MainDrawerParts.tsx +3 -3
  108. package/src/MainMenu.tsx +1 -1
  109. package/src/MarkdownEditor.tsx +88 -47
  110. package/src/Media.tsx +11 -20
  111. package/src/MediaTags.tsx +2 -2
  112. package/src/Notifications.tsx +2 -2
  113. package/src/Parts.tsx +17 -17
  114. package/src/Redirects.tsx +14 -22
  115. package/src/Screen.tsx +16 -6
  116. package/src/SeoScores.tsx +6 -6
  117. package/src/SideColumn.tsx +2 -2
  118. package/src/StartFab.tsx +6 -8
  119. package/src/ThemeStore.tsx +37 -16
  120. package/src/Tokens.tsx +2 -2
  121. package/src/apps.ts +7 -8
  122. package/src/checkSite.ts +86 -20
  123. package/src/drawerYield.d.mts +3 -0
  124. package/src/drawerYield.mjs +10 -0
  125. package/src/drawerYield.test.mjs +22 -0
  126. package/src/editor.css +59 -38
  127. package/src/examples.ts +1 -1
  128. package/src/fabScreens.test.mjs +28 -0
  129. package/src/fabScreens.ts +16 -0
  130. package/src/i18n/da-DK/library.ts +2 -2
  131. package/src/i18n/da-DK/text.ts +1 -1
  132. package/src/i18n/en-US/apps.ts +1 -1
  133. package/src/i18n/en-US/common.ts +8 -8
  134. package/src/i18n/en-US/library.ts +5 -5
  135. package/src/i18n/en-US/parts.ts +3 -3
  136. package/src/i18n/en-US/text.ts +1 -1
  137. package/src/i18n/index.ts +4 -8
  138. package/src/images.ts +2 -2
  139. package/src/legacyMove.test.mjs +137 -0
  140. package/src/legacyMove.ts +131 -0
  141. package/src/licenseData.ts +3 -3
  142. package/src/markdown.mjs +10 -7
  143. package/src/markdown.test.mjs +16 -2
  144. package/src/menuChildren.ts +5 -5
  145. package/src/menuOpen.ts +20 -4
  146. package/src/movedRoutes.d.mts +8 -1
  147. package/src/movedRoutes.mjs +102 -21
  148. package/src/movedRoutes.test.mjs +128 -6
  149. package/src/nav.ts +1 -1
  150. package/src/notificationData.ts +1 -1
  151. package/src/pageH1Panel.d.mts +4 -0
  152. package/src/pageH1Panel.mjs +31 -0
  153. package/src/pageH1Panel.test.mjs +56 -0
  154. package/src/pagePreview.tsx +22 -12
  155. package/src/schema.ts +2 -2
  156. package/src/sectionFrame.ts +3 -3
  157. package/src/sectionState.d.mts +3 -3
  158. package/src/sectionState.mjs +6 -6
  159. package/src/sectionState.test.mjs +14 -2
  160. package/src/sheetPlacement.d.mts +6 -4
  161. package/src/sheetPlacement.mjs +15 -10
  162. package/src/sheetPlacement.test.mjs +16 -9
  163. package/src/sidePanel.ts +38 -0
  164. package/src/site.ts +37 -13
  165. package/src/standard/accordion/index.tsx +1 -1
  166. package/src/standard/accordion/shared.ts +1 -1
  167. package/src/standard/buttons/index.tsx +1 -1
  168. package/src/standard/cards/index.tsx +1 -1
  169. package/src/standard/cards/shared.ts +1 -1
  170. package/src/standard/cookies/index.tsx +1 -1
  171. package/src/standard/posts/index.tsx +1 -1
  172. package/src/standard/testimonials/index.tsx +1 -1
  173. package/src/standard/testimonials/list.ts +1 -1
  174. package/src/store.ts +36 -31
  175. package/src/tagUses.d.mts +1 -1
  176. package/src/tagUses.mjs +2 -2
  177. package/src/tagUses.test.mjs +1 -1
  178. package/src/topBarSlot.tsx +7 -15
  179. package/src/ui.tsx +33 -22
  180. package/src/virtual.d.ts +6 -0
  181. package/starter/package.json +1 -1
  182. package/theme/components/PageHeading.astro +22 -0
  183. package/theme/layouts/Base.astro +2 -2
  184. package/theme/layouts/PageLayout.astro +37 -20
  185. package/theme/styles/global.css +2 -1
  186. package/theme/styles/ui.css +40 -10
@@ -0,0 +1,220 @@
1
+ // The Danish of defaults/collections.ts: its English texts (the keys) in Danish (the values), as the editor
2
+ // showed them before the switch to English. Joined in defaults/i18n/da-DK/index.ts.
3
+ export const collections: Record<string, string> = {
4
+ 'Button text': 'Knaptekst',
5
+ "If the field is empty, the standard text or the page's name is used.": 'Hvis feltet er tomt, bruges standardteksten eller sidens navn.',
6
+ 'Leads to': 'Fører til',
7
+ 'Book an appointment': 'Book en tid',
8
+ Call: 'Ring',
9
+ 'Open promotion': 'Åbn promovering',
10
+ 'A page': 'En side',
11
+ Promotion: 'Promovering',
12
+ Page: 'Side',
13
+ 'The page Google should show instead of this one.': 'Den side, Google skal vise i stedet for denne.',
14
+ 'Hide from search engines (noindex)': 'Skjul for søgemaskiner (noindex)',
15
+ 'The page is not shown in Google.': 'Siden vises ikke i Google.',
16
+ 'Decorative picture': 'Dekorativt billede',
17
+ On: 'Til',
18
+ Off: 'Fra',
19
+ 'Screen readers skip the picture.': 'Skærmlæsere springer billedet over.',
20
+ 'Alt text': 'Alternativ tekst',
21
+ Draft: 'Kladde',
22
+ 'Not shown on the website.': 'Vises ikke på hjemmesiden.',
23
+ Hidden: 'Skjult',
24
+ Published: 'Udgivet',
25
+ 'Shown on the website.': 'Vises på hjemmesiden.',
26
+ Scheduled: 'Planlagt',
27
+ 'Shown on the website from the time below.': 'Vises på hjemmesiden fra tidspunktet nedenfor.',
28
+ Time: 'Tidspunkt',
29
+ 'Published at most an hour after.': 'Udgives senest en time efter.',
30
+ 'Google title': 'Google-titel',
31
+ 'At most about 60 characters.': 'Højst ca. 60 tegn.',
32
+ 'Google description': 'Google-beskrivelse',
33
+ 'About 140-155 characters.': 'Ca. 140-155 tegn.',
34
+ 'Picture when shared': 'Billede ved deling',
35
+ 'Shown when the page is shared, e.g. on Facebook.': 'Vises, når siden deles, fx på Facebook.',
36
+ 'Title when shared': 'Titel ved deling',
37
+ 'If the field is empty, the Google title is used.': 'Hvis feltet er tomt, bruges Google-titlen.',
38
+ 'Description when shared': 'Beskrivelse ved deling',
39
+ 'If the field is empty, the Google description is used.': 'Hvis feltet er tomt, bruges Google-beskrivelsen.',
40
+ 'Main keyword': 'Primært søgeord',
41
+ 'The word becomes a link to here from other pages.': 'Ordet bliver et link hertil fra andre sider.',
42
+ 'Other keywords': 'Sekundære søgeord',
43
+ 'Each word becomes a link to here from other pages.': 'Hvert ord bliver et link hertil fra andre sider.',
44
+ Name: 'Navn',
45
+ Title: 'Titel',
46
+ Phone: 'Telefon',
47
+ Email: 'E-mail',
48
+ 'Write a valid email address': 'Skriv en gyldig e-mailadresse',
49
+ 'Street and number': 'Vej og nummer',
50
+ 'Postcode and town': 'Postnummer og by',
51
+ 'CVR number': 'CVR-nummer',
52
+ 'Shown at the bottom of every page.': 'Vises nederst på hver side.',
53
+ 'A CVR number has eight digits': 'Et CVR-nummer har otte cifre',
54
+ "The address of the site's profile. Shown in Google's data about the business.":
55
+ 'Adressen på sitets profil. Vises i Googles data om virksomheden.',
56
+ 'Share on Facebook': 'Del på Facebook',
57
+ 'Share on X': 'Del på X',
58
+ 'Share on LinkedIn': 'Del på LinkedIn',
59
+ 'Share on Pinterest': 'Del på Pinterest',
60
+ 'Shown only when the post has a picture.': 'Vises kun, når indlægget har et billede.',
61
+ 'Copy link': 'Kopiér link',
62
+ 'Reg. no.': 'Reg.nr.',
63
+ 'Account number': 'Kontonummer',
64
+ 'Front page': 'Forside',
65
+ 'The page is shown on the front page, and its own address sends on there.':
66
+ 'Siden vises på forsiden, og dens egen adresse sender videre dertil.',
67
+ 'Blog page': 'Blogside',
68
+ 'The page is shown at /blog/, and its own address sends on there.': 'Siden vises på /blog/, og dens egen adresse sender videre dertil.',
69
+ '404 page': '404-side',
70
+ 'The page is shown when an address does not exist.': 'Siden vises, når en adresse ikke findes.',
71
+ 'Contact page': 'Kontaktside',
72
+ 'The link to the directions goes here.': 'Linket til vejvisningen går hertil.',
73
+ 'Privacy policy': 'Privatlivspolitik',
74
+ 'The page that tells what information is stored, and why.': 'Siden, der fortæller, hvilke oplysninger der gemmes, og hvorfor.',
75
+ 'Cookie policy': 'Cookiepolitik',
76
+ "The cookie banner's link goes here; it may be the privacy policy.": 'Cookiebannerets link går hertil; det må være privatlivspolitikken.',
77
+ Blocks: 'Blokke',
78
+ Heading: 'Overskrift',
79
+ 'If empty, the default text is used.': 'Hvis feltet er tomt, bruges standardteksten.',
80
+ Text: 'Tekst',
81
+ Diploma: 'Diplom',
82
+ Heart: 'Hjerte',
83
+ 'Hand with heart': 'Hånd med hjerte',
84
+ 'Three people': 'Tre personer',
85
+ 'Two people': 'To personer',
86
+ 'Graduation cap': 'Studenterhue',
87
+ Handshake: 'Håndtryk',
88
+ Book: 'Bog',
89
+ 'Book with text': 'Bog med tekst',
90
+ Medal: 'Medalje',
91
+ Conversation: 'Samtale',
92
+ 'Lotus flower': 'Lotusblomst',
93
+ Leaf: 'Blad',
94
+ 'Light bulb': 'Pære',
95
+ Train: 'Tog',
96
+ Bicycle: 'Cykel',
97
+ Car: 'Bil',
98
+ Door: 'Dør',
99
+ 'Video camera': 'Videokamera',
100
+ Lifebuoy: 'Redningskrans',
101
+ Clock: 'Ur',
102
+ 'Map pin': 'Kortnål',
103
+ Coffee: 'Kaffe',
104
+ Wheelchair: 'Kørestol',
105
+ Letter: 'Brev',
106
+ Information: 'Info',
107
+ 'New blog post': 'Nyt blogindlæg',
108
+ 'Blog posts': 'Blogindlæg',
109
+ 'blog post': 'blogindlæg',
110
+ 'Not shown on the blog or in Google, but can be opened at its address.':
111
+ 'Vises ikke på bloggen eller i Google, men kan åbnes på sin adresse.',
112
+ Date: 'Dato',
113
+ URL: 'Adresse',
114
+ 'Short description': 'Kort beskrivelse',
115
+ 'Add tag': 'Tilføj tag',
116
+ 'Create a tag': 'Opret et tag',
117
+ 'Picture at the top': 'Billede øverst',
118
+ 'New page': 'Ny side',
119
+ Pages: 'Sider',
120
+ page: 'side',
121
+ 'Not shown in Google, but can be opened at its address.': 'Vises ikke i Google, men kan åbnes på sin adresse.',
122
+ Template: 'Skabelon',
123
+ 'Single column': 'En kolonne',
124
+ 'Full width': 'Fuld bredde',
125
+ 'Sidebar left': 'Sidebjælke til venstre',
126
+ 'Sidebar right': 'Sidebjælke til højre',
127
+ 'The theme decides which templates there are.': 'Temaet bestemmer, hvilke skabeloner der findes.',
128
+ 'For review': 'Til gennemsyn',
129
+ 'Only shown on pages under /ny/.': 'Vises kun på sider under /ny/.',
130
+ 'New tag': 'Nyt tag',
131
+ 'Blog category': 'Blogkategori',
132
+ Show: 'Vis',
133
+ Hide: 'Skjul',
134
+ 'Show the tag on the blog with its own page.': 'Vis tagget på bloggen med sin egen side.',
135
+ 'New promotion': 'Ny promovering',
136
+ promotion: 'promovering',
137
+ 'Pop-up': 'Pop op-vindue',
138
+ 'With a picture, text and a button.': 'Med billede, tekst og en knap.',
139
+ 'Action bar': 'Handlingslinje',
140
+ 'Buttons or text at the bottom of the screen on a phone.': 'Knapper eller tekst nederst på skærmen på en telefon.',
141
+ Activated: 'Aktiveret',
142
+ Picture: 'Billede',
143
+ 'Shown at the top, cropped to 3:2.': 'Vises øverst, skåret til 3:2.',
144
+ 'Shown on': 'Vises på',
145
+ 'All pages': 'Alle sider',
146
+ 'Selected pages': 'Udvalgte sider',
147
+ 'Blog posts with tags': 'Blogindlæg med tags',
148
+ 'Add page': 'Tilføj side',
149
+ 'Only shown on these pages.': 'Vises kun på disse sider.',
150
+ "Shown on blog posts with one of these tags and on the tags' pages.": 'Vises på blogindlæg med et af disse tags og på taggenes sider.',
151
+ Shown: 'Vises',
152
+ 'Each visitor sees it until they close it.': 'Hver besøgende ser det, til de lukker det.',
153
+ 'After a while': 'Efter en tid',
154
+ 'When the page is scrolled down': 'Når siden er rullet ned',
155
+ 'When the visitor is about to leave the page': 'Når den besøgende vil forlade siden',
156
+ 'On a phone: when the visitor scrolls up quickly.': 'På en telefon: når den besøgende ruller hurtigt op.',
157
+ 'Shown after': 'Vises efter',
158
+ 'At once': 'Med det samme',
159
+ '5 seconds': '5 sekunder',
160
+ '10 seconds': '10 sekunder',
161
+ '30 seconds': '30 sekunder',
162
+ 'Scrolled down': 'Rullet ned',
163
+ '25% of the page': '25 % af siden',
164
+ '50% of the page': '50 % af siden',
165
+ '75% of the page': '75 % af siden',
166
+ 'The whole page': 'Hele siden',
167
+ Button: 'Knap',
168
+ 'No button': 'Ingen knap',
169
+ 'Upload a PDF': 'Upload en PDF',
170
+ 'Page (button)': 'Side (knap)',
171
+ 'Buttons and text': 'Knapper og tekst',
172
+ item: 'punkt',
173
+ 'At most two items.': 'Højst to punkter.',
174
+ 'Shown under the heading.': 'Står under overskriften.',
175
+ 'The footer': 'Footeren',
176
+ 'Text (under the name)': 'Tekst (under navnet)',
177
+ 'Heading (contact)': 'Overskrift (kontakt)',
178
+ 'Edit phone, email and address': 'Rediger telefon, e-mail og adresse',
179
+ 'Heading (links)': 'Overskrift (links)',
180
+ 'Main menu': 'Hovedmenu',
181
+ 'main menu': 'hovedmenu',
182
+ 'The main menu': 'Hovedmenuen',
183
+ 'When the menu is off, the header has neither menu nor menu button.': 'Når menuen er fra, har headeren hverken menu eller menuknap.',
184
+ 'Menu items': 'Menupunkter',
185
+ 'menu item': 'menupunkt',
186
+ Submenu: 'Undermenu',
187
+ 'mobile menu': 'mobilmenu',
188
+ 'Mobile menu': 'Mobilmenu',
189
+ 'The mobile menu': 'Mobilmenuen',
190
+ 'The items are on a line under the header on a phone and can be swiped sideways.':
191
+ 'Punkterne står på en linje under headeren på en telefon og kan skubbes til siden.',
192
+ 'header button': 'headerknap',
193
+ 'Header button': 'Headerknap',
194
+ 'The header': 'Headeren',
195
+ 'Action button': 'Handlingsknap',
196
+ 'The button is in the header.': 'Knappen står i headeren.',
197
+ 'Menu button position': 'Menuknappens placering',
198
+ Left: 'Venstre',
199
+ Right: 'Højre',
200
+ Status: 'Status',
201
+ Tags: 'Tags',
202
+ 'Canonical URL': 'Canonical URL',
203
+ tag: 'tag',
204
+ Type: 'Type',
205
+ 'Download PDF': 'Download PDF',
206
+ PDF: 'PDF',
207
+ Footer: 'Footer',
208
+ footer: 'footer',
209
+ Links: 'Links',
210
+ link: 'link',
211
+ Facebook: 'Facebook',
212
+ Instagram: 'Instagram',
213
+ LinkedIn: 'LinkedIn',
214
+ X: 'X',
215
+ YouTube: 'YouTube',
216
+ TikTok: 'TikTok',
217
+ Pinterest: 'Pinterest',
218
+ Bank: 'Bank',
219
+ 'Write an address that starts with https://': 'Skriv en adresse, der begynder med https://',
220
+ };
@@ -0,0 +1,102 @@
1
+ // The Danish of defaults/colors.ts: its English texts (the keys) in Danish (the values), as the editor
2
+ // showed them before the switch to English. Joined in defaults/i18n/da-DK/index.ts.
3
+
4
+ export const colors: Record<string, string> = {
5
+ Background: 'Baggrund',
6
+ Surfaces: 'Flader',
7
+ 'Surface (lowest)': 'Flade (lavest)',
8
+ 'Surface (low)': 'Flade (lav)',
9
+ 'Surface (medium)': 'Flade (mellem)',
10
+ 'Surface (high)': 'Flade (høj)',
11
+ 'Surface (highest)': 'Flade (højest)',
12
+ 'Inverse surface': 'Omvendt flade',
13
+ 'Text on inverse surface': 'Tekst på omvendt flade',
14
+ 'Accent color on inverse surface': 'Accentfarve på omvendt flade',
15
+ 'Light color': 'Lys farve',
16
+ Text: 'Tekst',
17
+ 'Muted text': 'Stille tekst',
18
+ Lines: 'Streger',
19
+ Outlines: 'Kanter',
20
+ 'Accent color': 'Accentfarve',
21
+ 'Accent color on hover': 'Accentfarve under musen',
22
+ 'Text on accent color': 'Tekst på accentfarven',
23
+ 'Light accent color': 'Lys accentfarve',
24
+ 'Text on light accent color': 'Tekst på lys accentfarve',
25
+ 'Secondary color': 'Sekundær farve',
26
+ 'Text on secondary color': 'Tekst på sekundær farve',
27
+ 'Light secondary color': 'Lys sekundær farve',
28
+ 'Text on light secondary color': 'Tekst på lys sekundær farve',
29
+ 'Tertiary color': 'Tertiær farve',
30
+ 'Text on tertiary color': 'Tekst på tertiær farve',
31
+ 'Light tertiary color': 'Lys tertiær farve',
32
+ 'Text on light tertiary color': 'Tekst på lys tertiær farve',
33
+ 'Error color': 'Fejlfarve',
34
+ 'Text on error color': 'Tekst på fejlfarven',
35
+ 'Light error color': 'Lys fejlfarve',
36
+ 'Text on light error color': 'Tekst på lys fejlfarve',
37
+ 'Behind the whole page.': 'Bag hele siden.',
38
+ 'Cards, fields, and menus.': 'Kort, felter og menuer.',
39
+ 'Surfaces with the least emphasis.': 'Flader med mindst vægt.',
40
+ 'Cards with a shadow, blocks, and sheets.': 'Kort med skygge, blokke og ark.',
41
+ 'Menus and bars.': 'Menuer og bjælker.',
42
+ 'Dialogs and the search field.': 'Dialoger og søgefeltet.',
43
+ 'Filled cards, fields, and switches.': 'Udfyldte kort, felter og kontakter.',
44
+ 'Messages at the bottom and short tooltips.': 'Beskeder nederst og korte tooltips.',
45
+ 'The text and icons on the inverse surface.': 'Teksten og ikonerne på den omvendte flade.',
46
+ 'The buttons on the messages at the bottom.': 'Knapperne på beskederne nederst.',
47
+ 'Light boxes and highlights.': 'Lyse bokse og markeringer.',
48
+ 'All regular text and headings.': 'Al almindelig tekst og overskrifter.',
49
+ 'Subtitles, dates, and notes.': 'Undertekster, datoer og noter.',
50
+ 'Dividers and the edge around cards.': 'Skillelinjer og kanten om kort.',
51
+ 'The edge around fields, buttons, and chips.': 'Kanten om felter, knapper og chips.',
52
+ 'Buttons, links, icons, and the logo.': 'Knapper, links, ikoner og logoet.',
53
+ 'A button the pointer is over: a little darker (lighter in dark mode).': 'En knap, musen er over: lidt mørkere (i mørk tilstand lysere).',
54
+ 'The text on the buttons.': 'Teksten på knapperne.',
55
+ 'Buttons and surfaces in a light version of the accent color.': 'Knapper og flader i en lys udgave af accentfarven.',
56
+ 'The text and icons on the light accent color.': 'Teksten og ikonerne på den lyse accentfarve.',
57
+ 'Buttons in a different color than the accent color.': 'Knapper i en anden farve end accentfarven.',
58
+ 'The text and icons on the secondary color.': 'Teksten og ikonerne på den sekundære farve.',
59
+ 'Buttons and surfaces in a light version of the secondary color.': 'Knapper og flader i en lys udgave af den sekundære farve.',
60
+ 'The text and icons on the light secondary color.': 'Teksten og ikonerne på den lyse sekundære farve.',
61
+ 'Buttons in a third color that stands out from the other two.': 'Knapper i en tredje farve, der skiller sig ud fra de to andre.',
62
+ 'The text and icons on the tertiary color.': 'Teksten og ikonerne på den tertiære farve.',
63
+ 'Buttons and surfaces in a light version of the tertiary color.': 'Knapper og flader i en lys udgave af den tertiære farve.',
64
+ 'The text and icons on the light tertiary color.': 'Teksten og ikonerne på den lyse tertiære farve.',
65
+ 'Errors in fields and badges.': 'Fejl i felter og mærker.',
66
+ 'The text and icons on the error color.': 'Teksten og ikonerne på fejlfarven.',
67
+ 'Surfaces in a light version of the error color.': 'Flader i en lys udgave af fejlfarven.',
68
+ 'The text and icons on the light error color.': 'Teksten og ikonerne på den lyse fejlfarve.',
69
+ 'Text on the background': 'Teksten på baggrunden',
70
+ 'Text on surfaces': 'Teksten på flader',
71
+ 'Text in light boxes': 'Teksten i lyse bokse',
72
+ 'Muted text on the background': 'Den stille tekst på baggrunden',
73
+ 'Muted text on surfaces': 'Den stille tekst på flader',
74
+ 'Muted text in light boxes': 'Den stille tekst i lyse bokse',
75
+ 'Text on the lowest surface': 'Teksten på den laveste flade',
76
+ 'Text on the low surface': 'Teksten på den lave flade',
77
+ 'Text on the medium surface': 'Teksten på den mellemste flade',
78
+ 'Text on the high surface': 'Teksten på den høje flade',
79
+ 'Text on the highest surface': 'Teksten på den højeste flade',
80
+ 'Muted text on the lowest surface': 'Den stille tekst på den laveste flade',
81
+ 'Muted text on the low surface': 'Den stille tekst på den lave flade',
82
+ 'Muted text on the medium surface': 'Den stille tekst på den mellemste flade',
83
+ 'Muted text on the high surface': 'Den stille tekst på den høje flade',
84
+ 'Muted text on the highest surface': 'Den stille tekst på den højeste flade',
85
+ 'Links on the background': 'Links på baggrunden',
86
+ 'Links on surfaces': 'Links på flader',
87
+ 'The accent color in light boxes': 'Accentfarven i lyse bokse',
88
+ 'Links on the low surface': 'Links på den lave flade',
89
+ 'Text on buttons': 'Teksten på knapperne',
90
+ 'Text on buttons on hover': 'Teksten på knapperne under musen',
91
+ 'Text on the light accent color': 'Teksten på den lyse accentfarve',
92
+ 'Text on the secondary color': 'Teksten på den sekundære farve',
93
+ 'Text on the light secondary color': 'Teksten på den lyse sekundære farve',
94
+ 'Text on the tertiary color': 'Teksten på den tertiære farve',
95
+ 'Text on the light tertiary color': 'Teksten på den lyse tertiære farve',
96
+ 'Errors on the background': 'Fejl på baggrunden',
97
+ 'Errors in filled fields': 'Fejl i udfyldte felter',
98
+ 'Text on the error color': 'Teksten på fejlfarven',
99
+ 'Text on the light error color': 'Teksten på den lyse fejlfarve',
100
+ 'Text on the inverse surface': 'Teksten på den omvendte flade',
101
+ 'Buttons on the inverse surface': 'Knapperne på den omvendte flade',
102
+ };
@@ -0,0 +1,7 @@
1
+ // The Danish of defaults/company.ts: its English texts (the keys) in Danish (the values), as the editor
2
+ // showed them before the switch to English. Joined in defaults/i18n/da-DK/index.ts.
3
+ export const company: Record<string, string> = {
4
+ Contact: 'Kontakt',
5
+ 'Social media': 'Sociale medier',
6
+ Payment: 'Betaling',
7
+ };
@@ -0,0 +1,13 @@
1
+ // The Danish of defaults/editor.ts: its English texts (the keys) in Danish (the values), as the editor
2
+ // showed them before the switch to English. Joined in defaults/i18n/da-DK/index.ts.
3
+ export const editor: Record<string, string> = {
4
+ 'Default pages': 'Standardsider',
5
+ Dashboard: 'Oversigt',
6
+ Content: 'Indhold',
7
+ Globals: 'Globalt',
8
+ Blocks: 'Blokke',
9
+ Appearance: 'Udseende',
10
+ Privacy: 'Privatliv',
11
+ Settings: 'Indstillinger',
12
+ Apps: 'Apps',
13
+ };
@@ -0,0 +1,31 @@
1
+ // The standard parts' English texts in Danish (English text -> Danish text): joins the per-file dictionaries below.
2
+ // Exposes defaultsDaDK. Read by src/i18n/index.ts (the Danish editor, inSiteLanguage) and src/checkSite.ts (untranslated).
3
+ import { blockTexts } from './blockTexts';
4
+ import { collections } from './collections';
5
+ import { colors } from './colors';
6
+ import { company } from './company';
7
+ import { editor } from './editor';
8
+ import { internalLinks } from './internalLinks';
9
+ import { opens } from './opens';
10
+ import { popup } from './popup';
11
+ import { privacy } from './privacy';
12
+ import { rules } from './rules';
13
+ import { sitedata } from './sitedata';
14
+ import { standard } from './standard';
15
+ import { standardPages } from './standardPages';
16
+
17
+ export const defaultsDaDK: Record<string, string> = {
18
+ ...blockTexts,
19
+ ...collections,
20
+ ...colors,
21
+ ...company,
22
+ ...editor,
23
+ ...internalLinks,
24
+ ...opens,
25
+ ...popup,
26
+ ...privacy,
27
+ ...rules,
28
+ ...sitedata,
29
+ ...standard,
30
+ ...standardPages,
31
+ };
@@ -0,0 +1,12 @@
1
+ // The Danish of defaults/internalLinks.ts: its English texts (the keys) in Danish (the values), as the editor
2
+ // showed them before the switch to English. Joined in defaults/i18n/da-DK/index.ts.
3
+ export const internalLinks: Record<string, string> = {
4
+ 'Internal links': 'Interne links',
5
+ Activated: 'Aktiveret',
6
+ On: 'Til',
7
+ Off: 'Fra',
8
+ 'The keywords of the pages and blog posts become links to them when the website is updated.':
9
+ 'Søgeordene på siderne og blogindlæggene bliver links til dem, når hjemmesiden opdateres.',
10
+ 'Number of links (per page)': 'Antal links (pr. side)',
11
+ 'At most this many automatic links on a page or in a post.': 'Højst så mange automatiske links på en side eller i et indlæg.',
12
+ };
@@ -0,0 +1,7 @@
1
+ // The Danish of defaults/opens.ts: its English texts (the keys) in Danish (the values), as the editor
2
+ // showed them before the switch to English. Joined in defaults/i18n/da-DK/index.ts.
3
+ export const opens: Record<string, string> = {
4
+ Content: 'Indhold',
5
+ Promotion: 'Promovering',
6
+ 'Book an appointment': 'Book en tid',
7
+ };
@@ -0,0 +1,9 @@
1
+ // The Danish of defaults/popup.tsx: its English texts (the keys) in Danish (the values), as the editor
2
+ // showed them before the switch to English. Joined in defaults/i18n/da-DK/index.ts.
3
+ export const popup: Record<string, string> = {
4
+ 'Book an appointment': 'Book en tid',
5
+ Promotion: 'Promovering',
6
+ 'Pop-up': 'Pop op-vindue',
7
+ 'Action bar': 'Handlingslinje',
8
+ Call: 'Ring',
9
+ };
@@ -0,0 +1,38 @@
1
+ // The Danish of defaults/privacy.ts: its English texts (the keys) in Danish (the values), as the editor
2
+ // showed them before the switch to English. Joined in defaults/i18n/da-DK/index.ts.
3
+ export const privacy: Record<string, string> = {
4
+ Privacy: 'Privatliv',
5
+ 'Cookie banner': 'Cookiebanner',
6
+ Activated: 'Aktiveret',
7
+ On: 'Til',
8
+ Off: 'Fra',
9
+ 'When the banner is off, there is no analytics or ads.': 'Når banneret er fra, er der ingen måling eller annoncer.',
10
+ 'Edit privacy policy': 'Rediger privatlivspolitik',
11
+ Heading: 'Overskrift',
12
+ Text: 'Tekst',
13
+ 'Link text': 'Linktekst',
14
+ 'The link goes to the cookie policy.': 'Linket går til cookiepolitikken.',
15
+ 'Edit privacy pages': 'Rediger privatlivssider',
16
+ 'Button text (no)': 'Knaptekst (nej)',
17
+ 'Button text (yes)': 'Knaptekst (ja)',
18
+ 'Button text (advanced)': 'Knaptekst (avanceret)',
19
+ 'Button text (save choice)': 'Knaptekst (gem valg)',
20
+ 'Text (consent ID)': 'Tekst (samtykke-id)',
21
+ 'Shown with the visitor’s ID after an answer.': 'Vises med den besøgendes id efter et svar.',
22
+ 'Always shown; they cannot be switched off.': 'Vises altid; de kan ikke slås fra.',
23
+ 'Shown when an app asks for it.': 'Vises, når en app beder om den.',
24
+ 'Name (necessary)': 'Navn (nødvendige)',
25
+ 'Text (necessary)': 'Tekst (nødvendige)',
26
+ 'Name (preferences)': 'Navn (præferencer)',
27
+ 'Text (preferences)': 'Tekst (præferencer)',
28
+ 'Name (statistics)': 'Navn (statistik)',
29
+ 'Text (statistics)': 'Tekst (statistik)',
30
+ 'Name (marketing)': 'Navn (marketing)',
31
+ 'Text (marketing)': 'Tekst (marketing)',
32
+ 'Name (targeted ads)': 'Navn (målrettede annoncer)',
33
+ 'Text (targeted ads)': 'Tekst (målrettede annoncer)',
34
+ 'Privacy pages': 'Privatlivssider',
35
+ Consents: 'Samtykker',
36
+ 'Default pages': 'Standardsider',
37
+ Cookies: 'Cookies',
38
+ };
@@ -0,0 +1,56 @@
1
+ // The Danish of defaults/rules.ts: its English texts (the keys) in Danish (the values), as the editor
2
+ // showed them before the switch to English. Joined in defaults/i18n/da-DK/index.ts.
3
+ export const rules: Record<string, string> = {
4
+ 'Front page': 'Forside',
5
+ 'Edit the front page': 'Rediger forsiden',
6
+ 'Action bar': 'Handlingslinje',
7
+ 'Default buttons': 'Standardknapper',
8
+ 'A button in the action bar opens the promotion, so it must be turned on and shown everywhere the bar is shown. Change the button first.':
9
+ 'En knap i handlingslinjen åbner promoveringen, så den skal være slået til og vises alle steder, hvor linjen vises. Ret knappen først.',
10
+ 'A button on the page "{side}" opens the promotion, so it must be on and shown there. Change the button first.':
11
+ 'En knap på siden "{side}" åbner promoveringen, så den skal være slået til og vises dér. Ret knappen først.',
12
+ 'The default buttons open the promotion, so it must be on and shown on every page. Change them first.':
13
+ 'Standardknapperne åbner promoveringen, så den skal være slået til og vises på alle sider. Ret dem først.',
14
+ 'Edit the page': 'Rediger siden',
15
+ 'Edit the action bar': 'Rediger handlingslinjen',
16
+ 'Edit the default buttons': 'Rediger standardknapperne',
17
+ 'The default pages must be different pages.': 'Standardsiderne skal være forskellige sider.',
18
+ 'The page "{side}" does not have the block {blok}, which {hvad} must have. Put it in on the page first.':
19
+ 'Siden "{side}" har ikke blokken {blok}, som {hvad} skal have. Sæt den ind på siden først.',
20
+ '{side} must be a published page.': '{side} skal være en side, der er udgivet.',
21
+ 'A button opens the promotion "{navn}", which does not exist.': 'En knap åbner promoveringen "{navn}", som ikke findes.',
22
+ 'A button in the action bar opens the promotion. Change the button first.':
23
+ 'En knap i handlingslinjen åbner promoveringen. Ret knappen først.',
24
+ 'A button on the page "{side}" opens the promotion. Change the button first.':
25
+ 'En knap på siden "{side}" åbner promoveringen. Ret knappen først.',
26
+ 'The default buttons open the promotion. Change them first.': 'Standardknapperne åbner promoveringen. Ret dem først.',
27
+ 'The tag is used on a blog post. Remove it from the post first.': 'Tagget bruges på et blogindlæg. Fjern det fra det først.',
28
+ 'The tag is used on {antal} blog posts. Remove it from them first.': 'Tagget bruges på {antal} blogindlæg. Fjern det fra dem først.',
29
+ 'The tag is used on a page. Remove it from the page first.': 'Tagget bruges på en side. Fjern det fra den først.',
30
+ 'The tag is used on {antal} pages. Remove it from them first.': 'Tagget bruges på {antal} sider. Fjern det fra dem først.',
31
+ 'The tag is used on a testimonial. Remove it from the testimonial first.': 'Tagget bruges på en udtalelse. Fjern det fra den først.',
32
+ 'The tag is used on {antal} testimonials. Remove it from them first.': 'Tagget bruges på {antal} udtalelser. Fjern det fra dem først.',
33
+ 'The tag is used on a file. Remove it from the file first.': 'Tagget bruges på en fil. Fjern det fra den først.',
34
+ 'The tag is used on {antal} files. Remove it from them first.': 'Tagget bruges på {antal} filer. Fjern det fra dem først.',
35
+ 'Open the file': 'Åbn filen',
36
+ 'The tag is used in the promotion "{navn}". Remove it from the promotion first.':
37
+ 'Tagget bruges i promoveringen "{navn}". Fjern det fra den først.',
38
+ 'Edit the promotion': 'Rediger promoveringen',
39
+ 'The tag picks the posts on the front page under "From the blog". Pick another one first.':
40
+ 'Tagget vælger indlæggene på forsiden under "Fra bloggen". Vælg et andet først.',
41
+ 'The post is picked for the front page under "From the blog". Pick another one first.':
42
+ 'Indlægget er valgt til forsiden under "Fra bloggen". Vælg et andet først.',
43
+ 'The post is picked in a block of blog posts on the page "{side}". Pick another one first.':
44
+ 'Indlægget er valgt i en blok med blogindlæg på siden "{side}". Vælg et andet først.',
45
+ 'The tag is picked in a block in the blog post "{side}". Pick another one first.':
46
+ 'Tagget er valgt i en blok i blogindlægget "{side}". Vælg et andet først.',
47
+ 'The tag is picked in a block on the page "{side}". Pick another one first.':
48
+ 'Tagget er valgt i en blok på siden "{side}". Vælg et andet først.',
49
+ 'Edit the post': 'Rediger indlægget',
50
+ 'the front page': 'forsiden',
51
+ 'the blog': 'bloggen',
52
+ 'the page "{navn}" ({adresse})': 'siden "{navn}" ({adresse})',
53
+ 'the blog post "{navn}" ({adresse})': 'blogindlægget "{navn}" ({adresse})',
54
+ 'the tag "{navn}" on the blog ({adresse})': 'tagget "{navn}" på bloggen ({adresse})',
55
+ 'the picture {navn}': 'billedet {navn}',
56
+ };
@@ -0,0 +1,8 @@
1
+ // The Danish of defaults/sitedata.ts: its English texts (the keys) in Danish (the values), as the editor
2
+ // showed them before the switch to English. Joined in defaults/i18n/da-DK/index.ts.
3
+ export const sitedata: Record<string, string> = {
4
+ 'Book an appointment': 'Book en tid',
5
+ 'Blog category': 'Blogkategori',
6
+ Buttons: 'Knapper',
7
+ Call: 'Ring',
8
+ };
@@ -0,0 +1,8 @@
1
+ // The Danish of defaults/standard.ts: its English texts (the keys) in Danish (the values), as the editor
2
+ // showed them before the switch to English. Joined in defaults/i18n/da-DK/index.ts.
3
+ export const standard: Record<string, string> = {
4
+ 'Blog posts': 'Blogindlæg',
5
+ 'Book an appointment': 'Book en tid',
6
+ Call: 'Ring',
7
+ 'Open promotion': 'Åbn promovering',
8
+ };
@@ -0,0 +1,17 @@
1
+ // The Danish of defaults/standardPages.ts: its English texts (the keys) in Danish (the values), as the editor
2
+ // showed them before the switch to English. Joined in defaults/i18n/da-DK/index.ts.
3
+ export const standardPages: Record<string, string> = {
4
+ 'Front page': 'Forside',
5
+ 'The front page': 'Forsiden',
6
+ 'Blog page': 'Blogside',
7
+ 'The blog page': 'Blogsiden',
8
+ 'Blog posts': 'Blogindlæg',
9
+ '404 page': '404-side',
10
+ 'The 404 page': '404-siden',
11
+ 'Contact page': 'Kontaktside',
12
+ 'The contact page': 'Kontaktsiden',
13
+ 'Privacy policy': 'Privatlivspolitik',
14
+ 'The privacy policy': 'Privatlivspolitikken',
15
+ 'Cookie policy': 'Cookiepolitik',
16
+ 'The cookie policy': 'Cookiepolitikken',
17
+ };
@@ -1,12 +1,12 @@
1
- // "Interne links" under "Søgemaskineoptimering": the keywords of the pages, the posts and the blog page become links
1
+ // "Internal links" under "Search engine optimization": the keywords of the pages, the posts and the blog page become links
2
2
  // to them when the site is built (packages/editor/site/autolinks.mjs), in src/data/internal-links.json: whether they do and how many
3
3
  // per page; under them the list of the keywords (`below`, Keywords.tsx in the editor).
4
4
  import { LinkSimple } from '@phosphor-icons/react';
5
5
  import type { Part } from '../src/schema';
6
6
 
7
7
  export const internalLinks: Part = {
8
- id: 'interne-links',
9
- label: 'Interne links',
8
+ id: 'internal-links',
9
+ label: 'Internal links',
10
10
  icon: LinkSimple,
11
11
  file: 'src/data/internal-links.json',
12
12
  defaults: { enabled: true, maxPerPage: 8 },
@@ -14,17 +14,17 @@ export const internalLinks: Part = {
14
14
  fields: [
15
15
  {
16
16
  name: 'enabled',
17
- label: 'Aktiveret',
17
+ label: 'Activated',
18
18
  type: 'boolean',
19
- toggle: ['Til', 'Fra'],
20
- hint: 'Søgeordene på siderne og blogindlæggene bliver links til dem, når hjemmesiden opdateres.',
19
+ toggle: ['On', 'Off'],
20
+ hint: 'The keywords of the pages and blog posts become links to them when the website is updated.',
21
21
  },
22
22
  {
23
23
  name: 'maxPerPage',
24
- label: 'Antal links (pr. side)',
24
+ label: 'Number of links (per page)',
25
25
  type: 'number',
26
26
  required: true,
27
- hint: 'Højst så mange automatiske links på en side eller i et indlæg.',
27
+ hint: 'At most this many automatic links on a page or in a post.',
28
28
  },
29
29
  ],
30
30
  };
package/defaults/opens.ts CHANGED
@@ -1,7 +1,7 @@
1
- // What a button can open of a promotion ("Indhold" › "Promovering"), by its kind (Opens in
1
+ // What a button can open of a promotion ("Content" › "Promotion"), by its kind (Opens in
2
2
  // packages/editor/src/schema.ts): the list's own (the pop-up opens itself; the contact bar nothing,
3
3
  // FolderCollection.opens in collections.ts) and the apps' (AppKind.opens: Calendly's booking sheet itself, as
4
- // "Book en tid" does). For a button's choices in the editor (rules.ts) and its link on the site
4
+ // "Book an appointment" does). For a button's choices in the editor (rules.ts) and its link on the site
5
5
  // (standard.ts).
6
6
  import { appIdOf, type AppDefinition } from '../src/apps';
7
7
  import type { FolderCollection, Opens } from '../src/schema';
@@ -1,6 +1,6 @@
1
- // The site's own kinds of promotion drawn beside their form in the editor. A pop-up ("Promovering", the
2
- // kind "Pop op-vindue") as it looks on the site: the theme's box (PopupView.tsx, the same as Popup.astro shows on the
3
- // site) with the picture, heading and text, and its button: "Book en tid", "Ring" with the number, a page by its name,
1
+ // The site's own kinds of promotion drawn beside their form in the editor. A pop-up ("Promotion", the
2
+ // kind "Pop-up") as it looks on the site: the theme's box (PopupView.tsx, the same as Popup.astro shows on the
3
+ // site) with the picture, heading and text, and its button: "Book an appointment", "Call" with the number, a page by its name,
4
4
  // or "Download PDF", with the button's own text when it has one; and an app's kind with a part in it (Mailchimp's
5
5
  // signup, drawPart: FolderCollection.drawPart). Links and buttons are only drawn.
6
6
  import type { BlockData } from '../src/blocks';
@@ -43,11 +43,11 @@ export function drawPopup(p: Record<string, any>, data: BlockData, part?: KindPa
43
43
  );
44
44
  }
45
45
 
46
- // An action bar ("Promovering", the kind "Handlingslinje") as it looks on a phone (ActionBar.astro in the
46
+ // An action bar ("Promotion", the kind "Action bar") as it looks on a phone (ActionBar.astro in the
47
47
  // theme): the same standard bottom sheet (BottomSheet, .theme-action-bar-drawn in styles/components.css: in its place,
48
48
  // a phone wide) with the same toolbar row in it, its one or two items side by side, each a text (a list row of two lines: its heading over its text) or a button, the first button filled, the buttons with their own texts or those of their target
49
- // ("Book en tid", "Ring"), of what they open (a pop-up's heading, an app's booking sheet: "Book en tid") or of their
50
- // page; the calendar for what books, the phone for "Ring", the arrow after a page or a pop-up.
49
+ // ("Book an appointment", "Call"), of what they open (a pop-up's heading, an app's booking sheet: "Book an appointment") or of their
50
+ // page; the calendar for what books, the phone for "Call", the arrow after a page or a pop-up.
51
51
  export function drawActionBar(p: Record<string, any>, data: BlockData) {
52
52
  const pageName = (href: string) =>
53
53
  [...(data.relations.fixed ?? []), ...(data.relations.pages ?? [])].find((o) => o.value === href)?.label;
@@ -75,7 +75,7 @@ export function drawActionBar(p: Record<string, any>, data: BlockData) {
75
75
  );
76
76
  const own = String(b.label ?? '').trim();
77
77
  const opens = b.to === 'promotion' ? data.relations.promotions?.find((o) => o.value === b.open) : undefined;
78
- // What it does: "Book en tid" also for a promotion that stands for it (an app's booking sheet).
78
+ // What it does: "Book an appointment" also for a promotion that stands for it (an app's booking sheet).
79
79
  const to = opens?.as ?? b.to;
80
80
  const text =
81
81
  to === 'phone'