fulldev-ui 0.4.29 → 0.5.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/CONTRIBUTING.md +2 -2
  2. package/astro.config.ts +15 -4
  3. package/package.json +26 -16
  4. package/pnpm-lock.yaml +6473 -0
  5. package/public/favicon/android-chrome-192x192.png +0 -0
  6. package/public/favicon/android-chrome-512x512.png +0 -0
  7. package/public/favicon/apple-touch-icon.png +0 -0
  8. package/public/favicon/browserconfig.xml +7 -7
  9. package/public/favicon/favicon-16x16-dark.png +0 -0
  10. package/public/favicon/favicon-16x16.png +0 -0
  11. package/public/favicon/favicon-32x32-dark.png +0 -0
  12. package/public/favicon/favicon-32x32.png +0 -0
  13. package/public/favicon/favicon-48x48-dark.png +0 -0
  14. package/public/favicon/favicon-48x48.png +0 -0
  15. package/public/favicon/favicon-dark.ico +0 -0
  16. package/public/favicon/favicon.ico +0 -0
  17. package/public/favicon/favicon.svg +16 -0
  18. package/public/favicon/manifest.webmanifest +26 -0
  19. package/public/favicon/mstile-150x150.png +0 -0
  20. package/public/favicon/safari-pinned-tab.svg +14 -15
  21. package/public/favicon/yandex-browser-50x50.png +0 -0
  22. package/public/favicon/yandex-browser-manifest.json +9 -0
  23. package/src/blocks/Article.astro +21 -0
  24. package/src/blocks/Banner.astro +47 -0
  25. package/src/blocks/Colleagues.astro +2 -1
  26. package/src/blocks/Contact.astro +84 -99
  27. package/src/blocks/Cta.astro +2 -1
  28. package/src/blocks/Hero.astro +1 -2
  29. package/src/blocks/Intro.astro +1 -1
  30. package/src/blocks/Jobs.astro +1 -1
  31. package/src/blocks/Prices.astro +1 -1
  32. package/src/blocks/Product.astro +23 -10
  33. package/src/blocks/Reviews.astro +1 -1
  34. package/src/components/Avatar.astro +3 -20
  35. package/src/components/Badge.astro +17 -54
  36. package/src/components/Badges.astro +50 -0
  37. package/src/components/Button.astro +65 -45
  38. package/src/components/Buttons.astro +49 -0
  39. package/src/components/Card.astro +94 -177
  40. package/src/components/Cards.astro +135 -0
  41. package/src/components/Channel.astro +70 -0
  42. package/src/components/Channels.astro +37 -0
  43. package/src/components/Checkbox.astro +12 -16
  44. package/src/components/Dialog.astro +10 -12
  45. package/src/components/Drawer.astro +16 -22
  46. package/src/components/Element.astro +58 -0
  47. package/src/components/Footer.astro +139 -93
  48. package/src/components/Head.astro +7 -45
  49. package/src/components/Header.astro +78 -160
  50. package/src/components/Heading.astro +18 -26
  51. package/src/components/Icon.astro +9 -9
  52. package/src/components/Image.astro +43 -152
  53. package/src/components/Input.astro +10 -28
  54. package/src/components/Label.astro +14 -17
  55. package/src/components/Link.astro +22 -44
  56. package/src/components/List.astro +12 -10
  57. package/src/components/LocaleSwitcher.astro +25 -0
  58. package/src/components/Price.astro +38 -0
  59. package/src/components/Rating.astro +29 -25
  60. package/src/components/Search.astro +3 -3
  61. package/src/components/Section.astro +196 -236
  62. package/src/components/Select.astro +16 -34
  63. package/src/components/Sidebar.astro +123 -46
  64. package/src/components/Social.astro +28 -0
  65. package/src/components/Socials.astro +37 -0
  66. package/src/components/Switch.astro +14 -22
  67. package/src/components/Table.astro +23 -36
  68. package/src/components/Tagline.astro +11 -16
  69. package/src/components/Text.astro +17 -19
  70. package/src/components/Textarea.astro +8 -22
  71. package/src/components/ThemeSelect.astro +38 -0
  72. package/src/components/Toc.astro +98 -41
  73. package/src/components/Writeup.astro +90 -0
  74. package/src/components/docs/PropsTable.astro +229 -56
  75. package/src/components/experimental/Form.astro +10 -17
  76. package/src/components/experimental/Logo.astro +26 -9
  77. package/src/components/experimental/Prose.astro +9 -5
  78. package/src/components/experimental/Video.astro +1 -1
  79. package/src/components/experimental/Window.astro +3 -4
  80. package/src/components/sections.astro +28 -0
  81. package/src/content/config.ts +10 -7
  82. package/src/content/pages/base/_dialog.mdx +1 -2
  83. package/src/content/pages/base/_drawer.mdx +1 -2
  84. package/src/content/pages/base/_localeswitcher.mdx +17 -0
  85. package/src/content/pages/base/_switch.mdx +1 -2
  86. package/src/content/pages/base/badge.mdx +1 -12
  87. package/src/content/pages/base/button.mdx +1 -12
  88. package/src/content/pages/base/card.mdx +2 -29
  89. package/src/content/pages/base/checkbox.mdx +1 -2
  90. package/src/content/pages/base/icon.mdx +1 -2
  91. package/src/content/pages/base/image.mdx +42 -0
  92. package/src/content/pages/base/input.mdx +1 -12
  93. package/src/content/pages/base/rating.mdx +3 -14
  94. package/src/content/pages/base/section.mdx +2 -3
  95. package/src/content/pages/base/select.mdx +1 -12
  96. package/src/content/pages/base/table.mdx +1 -28
  97. package/src/content/pages/base/textarea.mdx +1 -11
  98. package/src/content/pages/base/theme-select.mdx +15 -0
  99. package/src/content/pages/blocks/_categories.mdx +3 -5
  100. package/src/content/pages/blocks/{footer.mdx → _footer.mdx} +2 -4
  101. package/src/content/pages/blocks/{header.mdx → _header.mdx} +2 -7
  102. package/src/content/pages/blocks/_jobs.mdx +1 -2
  103. package/src/content/pages/blocks/{prices.mdx → _prices.mdx} +5 -7
  104. package/src/content/pages/blocks/_product.mdx +1 -2
  105. package/src/content/pages/blocks/_products.mdx +1 -2
  106. package/src/content/pages/blocks/_stats.mdx +1 -1
  107. package/src/content/pages/blocks/{_banner.mdx → banner.mdx} +2 -2
  108. package/src/content/pages/blocks/colleagues.mdx +6 -8
  109. package/src/content/pages/blocks/contact.mdx +69 -0
  110. package/src/content/pages/blocks/content.mdx +1 -19
  111. package/src/content/pages/blocks/cta.mdx +2 -25
  112. package/src/content/pages/blocks/features.mdx +2 -3
  113. package/src/content/pages/blocks/hero.mdx +5 -3
  114. package/src/content/pages/blocks/intro.mdx +2 -5
  115. package/src/content/pages/blocks/posts.mdx +9 -2
  116. package/src/content/pages/blocks/reviews.mdx +23 -18
  117. package/src/content/pages/index.mdx +19 -20
  118. package/src/content/pages/layouts/docslayout.mdx +5 -0
  119. package/src/content/pages/layouts/layout.mdx +21 -0
  120. package/src/content/pages/layouts/pagelayout.mdx +21 -0
  121. package/src/content/pages/overview/components.mdx +70 -0
  122. package/src/content/pages/overview/content-layer.mdx +128 -0
  123. package/src/content/pages/overview/{theming.mdx → customization.mdx} +6 -6
  124. package/src/content/pages/overview/frameworks.mdx +4 -4
  125. package/src/content/pages/overview/installation.mdx +37 -3
  126. package/src/content/pages/overview/introduction.mdx +6 -2
  127. package/src/content/pages/schemas/page.mdx +11 -0
  128. package/src/content/pages/schemas/preset.mdx +9 -0
  129. package/src/content/pages/showcase/anti-slip-profiles.md +5 -0
  130. package/src/content/pages/showcase/fulldev-ui.md +5 -0
  131. package/src/content/pages/showcase/lavis-detailing.md +5 -0
  132. package/src/content/pages/showcase/leren-trainingsacteren.md +5 -0
  133. package/src/content/pages/showcase/miele-witgoedcenter-amsterdam.md +5 -0
  134. package/src/content/{records/record.yml → pages/showcase/record.md} +2 -0
  135. package/src/content/pages/showcase/sloepverhuur-bolsward.md +5 -0
  136. package/src/content/pages/showcase/stark-vulcanising-products.md +5 -0
  137. package/src/content/pages/showcase/the-gym-haren.md +5 -0
  138. package/src/content/pages/showcase/van-dillen-antieke-bouwmaterialen.md +5 -0
  139. package/src/content/pages/showcase.mdx +11 -41
  140. package/src/content/pages/typography/_tagline.mdx +1 -2
  141. package/src/content/pages/typography/heading.mdx +1 -2
  142. package/src/content/pages/typography/label.mdx +1 -2
  143. package/src/content/pages/typography/link.mdx +1 -13
  144. package/src/content/pages/typography/list.mdx +1 -2
  145. package/src/content/pages/typography/text.mdx +1 -2
  146. package/src/content/presets/base.yml +70 -0
  147. package/src/content/presets/blocks.yml +4 -0
  148. package/src/content/presets/docs.yml +65 -0
  149. package/src/css/color.css +0 -82
  150. package/src/css/custom.css +9 -56
  151. package/src/css/size.css +10 -0
  152. package/src/css/space.css +0 -8
  153. package/src/css/styles.css +0 -15
  154. package/src/images/avatar-1.yml +1 -0
  155. package/src/images/favicon.svg +16 -0
  156. package/src/integration/generate-colors.ts +2 -0
  157. package/src/integration/index.ts +67 -7
  158. package/src/layouts/BlockLayout.astro +10 -15
  159. package/src/layouts/ContactLayout.astro +21 -0
  160. package/src/layouts/ContentLayout.astro +16 -0
  161. package/src/layouts/DocsLayout.astro +85 -0
  162. package/src/layouts/Layout.astro +111 -133
  163. package/src/layouts/OverviewLayout.astro +22 -32
  164. package/src/layouts/PageLayout.astro +7 -24
  165. package/src/layouts/PostLayout.astro +8 -19
  166. package/src/layouts/ProductLayout.astro +9 -22
  167. package/src/loaders/imageLoader.ts +26 -0
  168. package/src/pages/[...page].astro +25 -21
  169. package/src/schemas/components/avatar.ts +3 -0
  170. package/src/schemas/components/avatars.ts +4 -0
  171. package/src/schemas/components/badge.ts +13 -0
  172. package/src/schemas/components/button.ts +16 -0
  173. package/src/schemas/components/buttons.ts +4 -0
  174. package/src/schemas/components/card.ts +25 -0
  175. package/src/schemas/components/cards.ts +4 -0
  176. package/src/schemas/components/channel.ts +13 -0
  177. package/src/schemas/components/channels.ts +4 -0
  178. package/src/schemas/components/footer.ts +24 -0
  179. package/src/schemas/components/header.ts +10 -0
  180. package/src/schemas/components/heading.ts +3 -0
  181. package/src/schemas/components/icon.ts +3 -0
  182. package/src/schemas/components/image.ts +18 -0
  183. package/src/schemas/components/images.ts +4 -0
  184. package/src/schemas/components/list.ts +3 -0
  185. package/src/schemas/components/logo.ts +3 -0
  186. package/src/schemas/components/price.ts +3 -0
  187. package/src/schemas/components/rating.ts +15 -0
  188. package/src/schemas/components/section.ts +15 -0
  189. package/src/schemas/components/sections.ts +3 -0
  190. package/src/schemas/components/social.ts +3 -0
  191. package/src/schemas/components/socials.ts +4 -0
  192. package/src/schemas/components/tagline.ts +3 -0
  193. package/src/schemas/components/text.ts +3 -0
  194. package/src/schemas/components/writeup.ts +20 -0
  195. package/src/schemas/imageSchema.ts +12 -0
  196. package/src/schemas/pageSchema.ts +63 -0
  197. package/src/schemas/presetSchema.ts +29 -0
  198. package/src/schemas/utils/categories.ts +3 -0
  199. package/src/schemas/utils/component.ts +17 -0
  200. package/src/schemas/utils/navigation.ts +53 -0
  201. package/src/schemas/{utils.ts → utils/pathSchema.ts} +2 -11
  202. package/src/types/global-props.d.ts +16 -0
  203. package/src/types/virtual-modules.d.ts +5 -0
  204. package/src/utils/_archive/Childmorphic.ts +1 -1
  205. package/src/utils/_archive/mergeEntries.ts +28 -0
  206. package/src/utils/getCategoryPages.ts +11 -0
  207. package/src/utils/getChildPages.ts +16 -0
  208. package/src/utils/getSiblingPages.ts +14 -0
  209. package/tsconfig.json +1 -2
  210. package/public/favicon/site.webmanifest +0 -19
  211. package/public/images/avatars/1.jpeg +0 -0
  212. package/public/images/avatars/2.jpeg +0 -0
  213. package/public/images/avatars/3.jpeg +0 -0
  214. package/public/images/avatars/300/1.jpeg +0 -0
  215. package/public/images/avatars/300/2.jpeg +0 -0
  216. package/public/images/avatars/300/3.jpeg +0 -0
  217. package/public/images/avatars/300/4.jpeg +0 -0
  218. package/public/images/avatars/4.jpeg +0 -0
  219. package/public/images/avatars/5.jpeg +0 -0
  220. package/public/images/avatars/6.jpeg +0 -0
  221. package/public/images/avatars/7.jpeg +0 -0
  222. package/public/images/avatars/8.jpeg +0 -0
  223. package/public/images/blocks/colleagues.png +0 -0
  224. package/public/images/blocks/content.png +0 -0
  225. package/public/images/blocks/cta.png +0 -0
  226. package/public/images/blocks/features.png +0 -0
  227. package/public/images/blocks/footer.png +0 -0
  228. package/public/images/blocks/header.png +0 -0
  229. package/public/images/blocks/hero.png +0 -0
  230. package/public/images/blocks/intro.png +0 -0
  231. package/public/images/blocks/posts.png +0 -0
  232. package/public/images/blocks/prices.png +0 -0
  233. package/public/images/blocks/reviews.png +0 -0
  234. package/public/images/logo-placeholder.svg +0 -1
  235. package/src/components/Bento.astro +0 -43
  236. package/src/components/Block.astro +0 -157
  237. package/src/components/Blocks.astro +0 -5
  238. package/src/components/Box.astro +0 -63
  239. package/src/components/Carousel.astro +0 -54
  240. package/src/components/Column.astro +0 -73
  241. package/src/components/Grid.astro +0 -32
  242. package/src/components/Masonry.astro +0 -42
  243. package/src/components/Root.astro +0 -94
  244. package/src/components/Row.astro +0 -49
  245. package/src/components/Split.astro +0 -59
  246. package/src/components/Spread.astro +0 -46
  247. package/src/components/Stack.astro +0 -36
  248. package/src/components/Toggle.astro +0 -46
  249. package/src/components/Wrap.astro +0 -42
  250. package/src/components/docs/NavigationButtons.astro +0 -59
  251. package/src/components/experimental/Channel.astro +0 -74
  252. package/src/components/experimental/Price.astro +0 -40
  253. package/src/content/pages/_changelog.mdx +0 -10
  254. package/src/content/pages/_segment/footer.mdx +0 -244
  255. package/src/content/pages/_segment/header.mdx +0 -210
  256. package/src/content/pages/base/_image.mdx +0 -14
  257. package/src/content/pages/base/toggle.mdx +0 -32
  258. package/src/content/pages/blocks.mdx +0 -10
  259. package/src/content/pages/overview/integration.mdx +0 -37
  260. package/src/content/pages/structure/_row.mdx +0 -23
  261. package/src/content/pages/structure/_wrap.mdx +0 -25
  262. package/src/content/pages/structure/carousel.mdx +0 -31
  263. package/src/content/pages/structure/column.mdx +0 -21
  264. package/src/content/pages/structure/grid.mdx +0 -26
  265. package/src/content/pages/structure/masonry.mdx +0 -32
  266. package/src/content/pages/structure/split.mdx +0 -21
  267. package/src/content/pages/structure/spread.mdx +0 -21
  268. package/src/content/pages/structure/stack.mdx +0 -22
  269. package/src/content/settings/base.yml +0 -55
  270. package/src/content/settings/components.yml +0 -29
  271. package/src/layouts/BlockOverviewLayout.astro +0 -39
  272. package/src/layouts/ComponentLayout.astro +0 -23
  273. package/src/layouts/JobsLayout.astro +0 -40
  274. package/src/schemas/base.ts +0 -90
  275. package/src/schemas/block.ts +0 -15
  276. package/src/schemas/card.ts +0 -3
  277. package/src/schemas/page.ts +0 -43
  278. package/src/utils/mergeEntries.ts +0 -28
  279. /package/{public/showcase → src/images}/anti-slip-profiles.webp +0 -0
  280. /package/{public/images/avatars/500/1.jpeg → src/images/avatar-1.jpeg} +0 -0
  281. /package/{public/images/avatars/500/2.jpeg → src/images/avatar-2.jpeg} +0 -0
  282. /package/{public/images/avatars/500/3.jpeg → src/images/avatar-3.jpeg} +0 -0
  283. /package/{public/images/avatars/500/4.jpeg → src/images/avatar-4.jpeg} +0 -0
  284. /package/{public → src}/images/avatar-placeholder.jpg +0 -0
  285. /package/{public → src}/images/block-code.png +0 -0
  286. /package/{public → src}/images/component-code.png +0 -0
  287. /package/{public/showcase → src/images}/fulldev-ui.webp +0 -0
  288. /package/{public/showcase → src/images}/lavis-detailing.webp +0 -0
  289. /package/{public/showcase → src/images}/leren-trainingsacteren.webp +0 -0
  290. /package/{public/showcase → src/images}/miele-witgoedcenter-amsterdam.webp +0 -0
  291. /package/{public → src}/images/og-image.png +0 -0
  292. /package/{public → src}/images/placeholder-center.webp +0 -0
  293. /package/{public → src}/images/placeholder-landscape-dark.png +0 -0
  294. /package/{public → src}/images/placeholder-landscape.webp +0 -0
  295. /package/{public → src}/images/placeholder-portrait.webp +0 -0
  296. /package/{public → src}/images/placeholder-right.webp +0 -0
  297. /package/{public → src}/images/placeholder.webp +0 -0
  298. /package/{public/showcase → src/images}/sloepverhuur-bolsward.webp +0 -0
  299. /package/{public/showcase → src/images}/stark-vulcanising-products.webp +0 -0
  300. /package/{public/showcase → src/images}/the-gym-haren.webp +0 -0
  301. /package/{public/showcase → src/images}/van-dillen-antieke-bouwmaterialen.webp +0 -0
@@ -1,19 +1,10 @@
1
1
  import { reference, z, type AnyEntryMap } from 'astro:content'
2
2
 
3
- // export const pagesPath = z
4
- // .string()
5
- // .transform((value) => {
6
- // const fullpath = value?.split(`pages/`).pop()
7
- // const slug = fullpath?.split('.').shift()
8
- // return slug
9
- // })
10
- // .pipe(reference('pages'))
11
-
12
- export const pathSchema = <C extends keyof AnyEntryMap>(collection: C) =>
3
+ // TODO: preprocess instead
4
+ export default <C extends keyof AnyEntryMap>(collection: C) =>
13
5
  z
14
6
  .string()
15
7
  .transform((value) => {
16
- // @ts-ignore
17
8
  const fullpath = value?.split(`${collection}/`).pop()
18
9
  const slug = fullpath?.split('.').shift()
19
10
  const noIndexEnding = slug?.replace('/index', '')
@@ -0,0 +1,16 @@
1
+ export type GlobalProps = {
2
+ if?: any
3
+ theme?: 'light' | 'dark' | string | null | undefined
4
+ color?: 'base' | 'brand' | string | null | undefined
5
+ size?: 'sm' | 'md' | 'lg' | string | number | null | undefined
6
+ contrast?: boolean | undefined
7
+ }
8
+
9
+ // declare global {
10
+ // type GlobalProps = {
11
+ // theme?: 'light' | 'dark' | undefined
12
+ // color?: 'base' | 'brand' | undefined
13
+ // size?: 'sm' | 'md' | 'lg' | undefined
14
+ // contrast?: boolean | undefined
15
+ // }
16
+ // }
@@ -0,0 +1,5 @@
1
+ declare module 'virtual:*' {
2
+ import type { Config } from 'fulldev-ui/integration'
3
+ const content: Config
4
+ export default content
5
+ }
@@ -4,5 +4,5 @@
4
4
  // [Key in keyof C & string as
5
5
  // | Lowercase<Key>
6
6
  // | Capitalize<Key>
7
- // | `${string}${Capitalize<Key>}`]?: C[Key]
7
+ // | `${string}${Capitalize<Key>}`]?: undefined | C[Key]
8
8
  // }
@@ -0,0 +1,28 @@
1
+ // import { getEntry } from 'astro:content'
2
+ // import { assign } from 'radash'
3
+
4
+ // export const mergeEntries = async (entry: any) => {
5
+ // if (!entry) return entry
6
+ // const { data, slug } = entry
7
+ // const baseSettings = await getEntry('layouts', 'base')
8
+ // const enSettings = await getEntry('layouts', 'en')
9
+ // const deSettings = await getEntry('layouts', 'de')
10
+ // const frSettings = await getEntry('layouts', 'fr')
11
+ // const pageSettings = data.settings && (await getEntry(data.settings))
12
+ // const i18nSettings = data.i18n && (await getEntry(data.i18n))
13
+
14
+ // let merged = {}
15
+ // merged = assign(merged, baseSettings?.data ?? {})
16
+ // slug?.startsWith('en') && (merged = assign(merged, enSettings?.data ?? {}))
17
+ // slug?.startsWith('de') && (merged = assign(merged, deSettings?.data ?? {}))
18
+ // slug?.startsWith('fr') && (merged = assign(merged, frSettings?.data ?? {}))
19
+ // merged = assign(merged, i18nSettings?.data ?? {})
20
+ // merged = assign(merged, pageSettings?.data ?? {})
21
+ // merged = assign(merged, data)
22
+
23
+ // const newEntry = {
24
+ // ...entry,
25
+ // data: merged,
26
+ // }
27
+ // return newEntry
28
+ // }
@@ -0,0 +1,11 @@
1
+ import { getCollection, type CollectionEntry } from 'astro:content'
2
+
3
+ // Pages that reference the current page
4
+ export const getCategoryPages = async (
5
+ slug: CollectionEntry<'pages'>['slug']
6
+ ) =>
7
+ (
8
+ await getCollection('pages', (page) =>
9
+ page.data?.categories?.some((p: any) => p.slug === slug)
10
+ )
11
+ )?.map((page) => page.data)
@@ -0,0 +1,16 @@
1
+ import { getCollection, type CollectionEntry } from 'astro:content'
2
+
3
+ // Records that are in a folder with the current page's slug
4
+ export const getChildPages = async (slug: CollectionEntry<'pages'>['slug']) =>
5
+ (
6
+ await getCollection(
7
+ 'pages',
8
+ (page) =>
9
+ page.slug.startsWith(slug) &&
10
+ page.slug !== slug &&
11
+ !page.slug.replace(`${slug}/`, '').includes('/')
12
+ )
13
+ )?.map(({ slug, data }) => ({
14
+ ...data,
15
+ href: `/${slug}/`,
16
+ }))
@@ -0,0 +1,14 @@
1
+ import { getCollection, type CollectionEntry } from 'astro:content'
2
+
3
+ // Pages that are in the same folder as the current page
4
+ export const getSiblingPages = async (slug: CollectionEntry<'pages'>['slug']) =>
5
+ (
6
+ await getCollection('pages', (page) => {
7
+ const currentPageFolder = slug.split('/').slice(0, -1).join('/')
8
+ const pageFolder = page.slug.split('/').slice(0, -1).join('/')
9
+ return page.slug !== slug && pageFolder === currentPageFolder
10
+ })
11
+ )?.map(({ slug, data }) => ({
12
+ ...data,
13
+ href: `/${slug}/`,
14
+ }))
package/tsconfig.json CHANGED
@@ -1,7 +1,6 @@
1
1
  {
2
- "extends": "astro/tsconfigs/strict",
2
+ "extends": "astro/tsconfigs/strictest",
3
3
  "compilerOptions": {
4
- "jsx": "preserve",
5
4
  "baseUrl": ".",
6
5
  "paths": {
7
6
  "fulldev-ui/*": [
@@ -1,19 +0,0 @@
1
- {
2
- "name": "",
3
- "short_name": "",
4
- "icons": [
5
- {
6
- "src": "/favicon/android-chrome-192x192.png",
7
- "sizes": "192x192",
8
- "type": "image/png"
9
- },
10
- {
11
- "src": "/favicon/android-chrome-512x512.png",
12
- "sizes": "512x512",
13
- "type": "image/png"
14
- }
15
- ],
16
- "theme_color": "#ffffff",
17
- "background_color": "#ffffff",
18
- "display": "standalone"
19
- }
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="220" height="40" fill="none" viewBox="0 0 220 40"><path fill="#0E1534" d="M20 40c11.046 0 20-8.954 20-20V6a6 6 0 0 0-6-6H21v8.774c0 2.002.122 4.076 1.172 5.78a9.999 9.999 0 0 0 6.904 4.627l.383.062a.8.8 0 0 1 0 1.514l-.383.062a10 10 0 0 0-8.257 8.257l-.062.383a.8.8 0 0 1-1.514 0l-.062-.383a10 10 0 0 0-4.627-6.904C12.85 21.122 10.776 21 8.774 21H.024C.547 31.581 9.29 40 20 40Z"></path><path fill="#0E1534" d="M0 19h8.774c2.002 0 4.076-.122 5.78-1.172a10.018 10.018 0 0 0 3.274-3.274C18.878 12.85 19 10.776 19 8.774V0H6a6 6 0 0 0-6 6v13ZM46.455 2a2 2 0 1 1-4 0 2 2 0 0 1 4 0ZM211.711 12.104c5.591 0 8.289 3.905 8.289 8.428v8.495h-5.851V21.54c0-2.05-.748-3.742-2.893-3.742-2.145 0-2.86 1.692-2.86 3.742v7.486h-5.851V21.54c0-2.05-.715-3.742-2.861-3.742-2.145 0-2.893 1.692-2.893 3.742v7.486h-5.85v-8.495c0-4.523 2.697-8.428 8.288-8.428 3.056 0 5.266 1.204 6.274 3.189 1.072-1.985 3.413-3.19 6.208-3.19ZM180.427 23.82c1.885 0 2.698-1.725 2.698-3.776v-7.29h5.85v8.006c0 4.784-2.795 8.755-8.548 8.755-5.754 0-8.549-3.97-8.549-8.755v-8.006h5.851v7.29c0 2.05.812 3.776 2.698 3.776ZM163.275 29.547c-3.673 0-6.046-1.269-7.444-3.742l4.226-2.376c.585 1.041 1.462 1.562 2.925 1.562 1.203 0 1.755-.423 1.755-.944 0-1.985-8.581.033-8.581-6.28 0-3.06 2.6-5.533 7.021-5.533 3.868 0 5.981 1.887 6.924 3.71l-4.226 2.408c-.357-.976-1.463-1.562-2.568-1.562-.845 0-1.3.358-1.3.846 0 2.018 8.581.163 8.581 6.281 0 3.417-3.348 5.63-7.313 5.63ZM142.833 36.512h-5.851V20.858c0-4.98 3.738-8.592 8.939-8.592 5.071 0 8.939 3.873 8.939 8.592 0 5.207-3.446 8.657-8.614 8.657-1.203 0-2.405-.358-3.413-.912v7.909Zm3.088-12.497c1.853 0 3.088-1.432 3.088-3.125 0-1.724-1.235-3.124-3.088-3.124s-3.088 1.4-3.088 3.125c0 1.692 1.235 3.124 3.088 3.124ZM131.121 11.03c-1.918 0-3.51-1.595-3.51-3.515 0-1.92 1.592-3.515 3.51-3.515 1.918 0 3.511 1.595 3.511 3.515 0 1.92-1.593 3.515-3.511 3.515Zm-2.925 1.724h5.851v16.273h-5.851V12.754ZM116.97 29.515c-5.071 0-8.939-3.905-8.939-8.657 0-4.719 3.868-8.624 8.939-8.624s8.939 3.905 8.939 8.624c0 4.752-3.868 8.657-8.939 8.657Zm0-5.5c1.853 0 3.088-1.432 3.088-3.125 0-1.724-1.235-3.156-3.088-3.156s-3.088 1.432-3.088 3.156c0 1.693 1.235 3.125 3.088 3.125ZM96.983 37c-4.03 0-6.956-1.79-8.451-4.98l4.843-2.603c.52 1.107 1.495 2.246 3.51 2.246 2.114 0 3.511-1.335 3.674-3.678-.78.684-2.016 1.204-3.868 1.204-4.519 0-8.16-3.482-8.16-8.364 0-4.718 3.869-8.559 8.94-8.559 5.201 0 8.939 3.613 8.939 8.592v6.444c0 5.858-4.064 9.698-9.427 9.698Zm.39-13.31c1.755 0 3.088-1.205 3.088-2.995 0-1.757-1.332-2.929-3.088-2.929-1.723 0-3.088 1.172-3.088 2.93 0 1.79 1.365 2.993 3.088 2.993ZM78.607 29.515c-5.071 0-8.94-3.905-8.94-8.657 0-4.719 3.869-8.624 8.94-8.624 5.07 0 8.939 3.905 8.939 8.624 0 4.752-3.869 8.657-8.94 8.657Zm0-5.5c1.853 0 3.088-1.432 3.088-3.125 0-1.724-1.235-3.156-3.088-3.156s-3.088 1.432-3.088 3.156c0 1.693 1.235 3.125 3.088 3.125ZM59.013 7.06v16.434H68.7v5.533H58.2c-3.705 0-5.2-1.953-5.2-5.045V7.06h6.013Z"></path></svg>
@@ -1,43 +0,0 @@
1
- ---
2
- import type { HTMLTag, Polymorphic } from 'astro/types'
3
- import Root from 'fulldev-ui/components/Root.astro'
4
-
5
- type Props<As extends HTMLTag = 'div'> = Polymorphic<{ as: As }> & {
6
- size?: 'sm' | 'md' | 'lg'
7
- color?: 'base' | 'brand'
8
- }
9
-
10
- const { ...rest } = Astro.props
11
- ---
12
-
13
- <Root
14
- class:list="bento"
15
- {...rest}
16
- >
17
- <slot />
18
- </Root>
19
-
20
- <style is:global lang="scss">
21
- @layer fulldev {
22
- .bento {
23
- display: grid;
24
- position: relative;
25
- grid-template-columns: 1fr;
26
- gap: var(--space-4);
27
- width: 100%;
28
-
29
- @media (min-width: 1024px) {
30
- grid-template-columns: repeat(5, 1fr);
31
-
32
- & > * {
33
- grid-column: span 2;
34
- }
35
-
36
- & > *:nth-child(3n + 2),
37
- & > *:nth-child(3n + 3) {
38
- grid-column: span 3;
39
- }
40
- }
41
- }
42
- }
43
- </style>
@@ -1,157 +0,0 @@
1
- ---
2
- import { getCollection, getEntries, getEntry } from 'astro:content'
3
- import { assign, mapKeys } from 'radash'
4
-
5
- interface Props {
6
- _bookshop_name?: string
7
- [key: string | number | symbol]: any
8
- }
9
-
10
- let { _bookshop_name, records, pages, source, ...rest } = Astro.props
11
-
12
- const packageBlocks = import.meta.glob('../blocks/**/*.astro')
13
- const userBlocks = import.meta.glob('/src/blocks/**/*.astro')
14
-
15
- const mapBlockKeys = (blocks: any) =>
16
- mapKeys(blocks, (key: any) => key.split('/').pop().split('.').shift())
17
-
18
- const components = {
19
- ...mapBlockKeys(packageBlocks),
20
- ...mapBlockKeys(userBlocks),
21
- }
22
-
23
- const found = components[_bookshop_name as any] as any
24
- const functioncomp = found && (await found())
25
- const Component = functioncomp?.default
26
-
27
- records = records
28
- ? (await getEntries(records)).map((entry: any) => entry?.data)
29
- : undefined
30
-
31
- pages = pages
32
- ? (await getEntries(pages)).map((entry: any) => ({
33
- href: `/${entry.slug}/`,
34
- ...entry?.data,
35
- }))
36
- : undefined
37
-
38
- const slug = Astro.url.pathname.replace(/^\/|\/$/g, '')
39
-
40
- const children =
41
- source === 'children' && slug
42
- ? [
43
- ...(
44
- await getCollection(
45
- 'pages',
46
- (page: any) =>
47
- page.slug.startsWith(slug) &&
48
- page.slug !== slug &&
49
- !page.slug.replace(`${slug}/`, '').includes('/')
50
- )
51
- ).map((page: any) => ({ href: `/${page.slug}/`, ...page.data })),
52
- ...(
53
- await getCollection(
54
- 'records',
55
- (record: any) =>
56
- record.id.startsWith(slug) &&
57
- record.id !== slug &&
58
- !record.id.replace(`${slug}/`, '').includes('/')
59
- )
60
- ).map((record: any) => record.data),
61
- ]
62
- : undefined
63
-
64
- const references =
65
- source === 'references' && slug
66
- ? (
67
- await getCollection('pages', (page: any) =>
68
- page.data?.pages?.find(
69
- (page: any) =>
70
- page.slug
71
- .replace('.md', '')
72
- .replace('/index', '')
73
- .replace('src/content/', '') === slug
74
- )
75
- )
76
- ).map((item: any) => ({ href: `/${item.slug}/`, ...item.data }))
77
- : undefined
78
-
79
- const siblings =
80
- source === 'siblings' && slug
81
- ? (
82
- await getCollection('pages', (page: any) => {
83
- const currentPageFolder = slug.split('/').slice(0, -1).join('/')
84
- const pageFolder = page.slug.split('/').slice(0, -1).join('/')
85
- return (
86
- page.slug !== slug &&
87
- pageFolder === currentPageFolder &&
88
- page.slug.startsWith(currentPageFolder)
89
- )
90
- })
91
- )
92
- .map((item: any) => ({ href: `/${item.slug}/`, ...item.data }))
93
- .sort(() => Math.random() - 0.5) // Randomize the order
94
- : undefined
95
-
96
- const mergedPages = pages
97
- ? await Promise.all(
98
- pages.map(async (page: any) => {
99
- if (!page.i18n) return page
100
- const i18n = await getEntry(page.i18n)
101
- return assign(i18n?.data, page)
102
- })
103
- )
104
- : undefined
105
-
106
- const mergedChildren = children
107
- ? await Promise.all(
108
- children.map(async (child: any) => {
109
- if (!child.i18n) return child
110
- const i18n = await getEntry(child.i18n)
111
- return assign(i18n?.data, child)
112
- })
113
- )
114
- : undefined
115
-
116
- const mergedReferences = references
117
- ? await Promise.all(
118
- references.map(async (reference: any) => {
119
- if (!reference.i18n) return reference
120
- const i18n = await getEntry(reference.i18n)
121
- return assign(i18n?.data, reference)
122
- })
123
- )
124
- : undefined
125
-
126
- const mergedSiblings = siblings
127
- ? await Promise.all(
128
- siblings.map(async (sibling: any) => {
129
- if (!sibling.i18n) return sibling
130
- const i18n = await getEntry(sibling.i18n)
131
- return assign(i18n?.data, sibling)
132
- })
133
- )
134
- : undefined
135
- ---
136
-
137
- {
138
- Component && (
139
- <Component
140
- cards={
141
- mergedPages ||
142
- mergedSiblings ||
143
- records ||
144
- mergedChildren ||
145
- mergedReferences
146
- }
147
- pages={
148
- mergedPages ||
149
- mergedSiblings ||
150
- records ||
151
- mergedChildren ||
152
- mergedReferences
153
- }
154
- {...rest}
155
- />
156
- )
157
- }
@@ -1,5 +0,0 @@
1
- ---
2
- import Block from './Block.astro'
3
- ---
4
-
5
- {Object.values(Astro.props ?? {})?.map((block: any) => <Block {...block} />)}
@@ -1,63 +0,0 @@
1
- ---
2
- import type { HTMLTag, Polymorphic } from 'astro/types'
3
- import Bento from './Bento.astro'
4
- import Carousel from './Carousel.astro'
5
- import Column from './Column.astro'
6
- import Grid from './Grid.astro'
7
- import Masonry from './Masonry.astro'
8
- import Row from './Row.astro'
9
- import Split from './Split.astro'
10
- import Spread from './Spread.astro'
11
- import Stack from './Stack.astro'
12
- import Wrap from './Wrap.astro'
13
-
14
- type Props<As extends HTMLTag = 'div'> = Polymorphic<{ as: As }> & {
15
- align?: 'start' | 'center' | 'end'
16
- position?: 'inset'
17
- space?: 'none' | 'auto'
18
- size?: 'sm' | 'md' | 'lg'
19
- structure?:
20
- | 'bento'
21
- | 'carousel'
22
- | 'column'
23
- | 'grid'
24
- | 'masonry'
25
- | 'row'
26
- | 'split'
27
- | 'spread'
28
- | 'wrap'
29
- | 'stack'
30
- }
31
-
32
- const structuresMap = {
33
- bento: Bento,
34
- carousel: Carousel,
35
- column: Column,
36
- grid: Grid,
37
- masonry: Masonry,
38
- row: Row,
39
- split: Split,
40
- spread: Spread,
41
- wrap: Wrap,
42
- stack: Stack,
43
- }
44
-
45
- const {
46
- as = 'div',
47
- space = 'auto',
48
- structure = 'column',
49
- align = 'start',
50
- ...rest
51
- } = Astro.props
52
-
53
- const Structure = structuresMap[structure] ?? structuresMap['column']
54
- ---
55
-
56
- <Structure
57
- {as}
58
- {align}
59
- {space}
60
- {...rest as any}
61
- >
62
- <slot />
63
- </Structure>
@@ -1,54 +0,0 @@
1
- ---
2
- import type { HTMLTag, Polymorphic } from 'astro/types'
3
- import Root from 'fulldev-ui/components/Root.astro'
4
-
5
- type Props<As extends HTMLTag = 'div'> = Polymorphic<{ as: As }> & {
6
- color?: 'base' | 'brand'
7
- size?: 'sm' | 'md' | 'lg'
8
- position?: 'inset'
9
- }
10
-
11
- const { ...rest } = Astro.props
12
- ---
13
-
14
- <Root
15
- class:list="carousel"
16
- {...rest}
17
- >
18
- <slot />
19
- </Root>
20
-
21
- <style is:global lang="scss">
22
- @layer fulldev {
23
- .carousel {
24
- --column-width: calc(21 * var(--space-4));
25
-
26
- display: flex;
27
- position: relative;
28
- position: relative;
29
- flex-direction: row;
30
- align-items: flex-start;
31
- gap: var(--space-4);
32
- padding-bottom: var(--space-4);
33
- width: 100%;
34
- overflow-x: auto;
35
- scroll-behavior: smooth;
36
- scroll-snap-type: x mandatory;
37
-
38
- > .root {
39
- flex-grow: 0;
40
- flex-shrink: 0;
41
- width: var(--column-width);
42
- scroll-snap-align: center;
43
- }
44
-
45
- &.position-inset {
46
- margin-right: calc(var(--inset-right) * -1);
47
- margin-left: calc(var(--inset-left) * -1);
48
- padding-right: var(--inset-right);
49
- padding-left: var(--inset-left);
50
- width: calc(100% + var(--inset-left) + var(--inset-right));
51
- }
52
- }
53
- }
54
- </style>
@@ -1,73 +0,0 @@
1
- ---
2
- import type { HTMLTag, Polymorphic } from 'astro/types'
3
- import Root from 'fulldev-ui/components/Root.astro'
4
-
5
- type Props<As extends HTMLTag = 'div'> = Polymorphic<{ as: As }> & {
6
- color?: 'base' | 'brand'
7
- size?: 'sm' | 'md' | 'lg'
8
- align?: 'start' | 'center' | 'end'
9
- space?: 'none' | 'auto'
10
- }
11
-
12
- const { space = 'auto', align = 'start', ...rest } = Astro.props
13
- ---
14
-
15
- <Root
16
- class:list="column"
17
- {align}
18
- {space}
19
- {...rest}
20
- >
21
- <slot />
22
- </Root>
23
-
24
- <style is:global lang="scss">
25
- @layer fulldev {
26
- .column {
27
- display: flex;
28
- position: relative;
29
- flex-direction: column;
30
-
31
- &.align-start {
32
- align-items: flex-start;
33
- text-align: left;
34
- }
35
-
36
- &.align-center {
37
- align-items: center;
38
- text-align: center;
39
-
40
- & > *:not(.align-center) > *:not(.align-center) {
41
- text-align: left;
42
- }
43
- }
44
-
45
- &.align-end {
46
- align-items: flex-end;
47
- }
48
-
49
- &.justify-start {
50
- justify-content: center;
51
- }
52
-
53
- &.justify-center {
54
- justify-content: center;
55
- }
56
-
57
- &.justify-end {
58
- justify-content: flex-end;
59
- }
60
-
61
- &.space-auto {
62
- > * + * {
63
- margin-top: var(--space-auto);
64
- }
65
-
66
- > * + .carousel {
67
- margin-top: 0;
68
- padding-top: var(--space-auto);
69
- }
70
- }
71
- }
72
- }
73
- </style>
@@ -1,32 +0,0 @@
1
- ---
2
- import type { HTMLTag, Polymorphic } from 'astro/types'
3
- import Root from 'fulldev-ui/components/Root.astro'
4
-
5
- type Props<As extends HTMLTag = 'div'> = Polymorphic<{ as: As }> & {
6
- color?: 'base' | 'brand'
7
- size?: 'sm' | 'md' | 'lg'
8
- }
9
-
10
- const { ...rest } = Astro.props
11
- ---
12
-
13
- <Root
14
- class:list="grid"
15
- {...rest}
16
- >
17
- <slot />
18
- </Root>
19
-
20
- <style is:global lang="scss">
21
- @layer fulldev {
22
- .grid {
23
- --column-width: calc(21 * var(--space-4));
24
-
25
- display: grid;
26
- position: relative;
27
- grid-template-columns: repeat(auto-fill, minmax(var(--column-width), 1fr));
28
- gap: var(--space-4);
29
- width: 100%;
30
- }
31
- }
32
- </style>