spoko-design-system 0.7.1 → 0.7.2

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 (169) hide show
  1. package/.astro/settings.json +4 -4
  2. package/.github/dependabot.yml +11 -11
  3. package/.github/todo.yml +3 -3
  4. package/.github/workflows/deploy.yml +39 -39
  5. package/.stackblitzrc +5 -5
  6. package/.vscode/extensions.json +5 -5
  7. package/.vscode/launch.json +11 -11
  8. package/.vscode/settings.json +5 -5
  9. package/LICENSE +21 -21
  10. package/README.md +114 -114
  11. package/astro-i18next.config.mjs +17 -17
  12. package/astro-i18next.config.ts +10 -10
  13. package/astro.config.mjs +86 -86
  14. package/dev-dist/sw.js +91 -91
  15. package/dev-dist/workbox-c676b6d3.js +3391 -3391
  16. package/icon.config.ts +309 -309
  17. package/index.ts +66 -66
  18. package/package.json +5 -5
  19. package/public/fonts/lg.svg +53 -53
  20. package/public/fonts/vwhead-bold-demo.html +549 -549
  21. package/public/fonts/vwhead-regular-demo.html +549 -549
  22. package/public/fonts/vwtext-bold-demo.html +549 -549
  23. package/public/fonts/vwtext-regular-demo.html +549 -549
  24. package/public/github.svg +3 -3
  25. package/public/grid_dot.svg +4 -4
  26. package/public/linkedin.svg +44 -44
  27. package/public/locales/en/translation.json +8 -8
  28. package/public/locales/pl/translation.json +8 -8
  29. package/public/make-scrollable-code-focusable.js +3 -3
  30. package/public/pagefind.yml +3 -3
  31. package/public/polo.blue.svg +29 -29
  32. package/public/spoko.space.svg +71 -71
  33. package/public/twitter.svg +46 -46
  34. package/renovate.json +6 -6
  35. package/sandbox.config.json +11 -11
  36. package/src/MyComponent.astro +8 -8
  37. package/src/components/Badge.vue +19 -19
  38. package/src/components/Badges.vue +21 -21
  39. package/src/components/Breadcrumbs.vue +107 -107
  40. package/src/components/Button.vue +101 -101
  41. package/src/components/ButtonCopy.astro +183 -183
  42. package/src/components/ButtonCopy.vue +36 -36
  43. package/src/components/Card.astro +27 -27
  44. package/src/components/Carousel.astro +26 -26
  45. package/src/components/Category/CategoriesCarousel.astro +101 -101
  46. package/src/components/Category/CategoryDetails.astro +169 -169
  47. package/src/components/Category/CategoryLink.vue +28 -28
  48. package/src/components/Category/CategorySidebarToggler.vue +9 -9
  49. package/src/components/Category/CategoryTile.astro +39 -39
  50. package/src/components/Category/CategoryViewToggler.astro +89 -89
  51. package/src/components/Category/SubCategoryLink.vue +19 -19
  52. package/src/components/Copyright.astro +12 -12
  53. package/src/components/Date.astro +7 -7
  54. package/src/components/Faq.astro +33 -33
  55. package/src/components/FaqItem.astro +80 -80
  56. package/src/components/FeaturesList.vue +41 -41
  57. package/src/components/FuckRussia.vue +62 -62
  58. package/src/components/HandDrive.astro +29 -29
  59. package/src/components/Header/Header.astro +210 -210
  60. package/src/components/Header/SkipToContent.astro +1 -1
  61. package/src/components/Headline.vue +48 -48
  62. package/src/components/Image.astro +30 -30
  63. package/src/components/LeftSidebar.astro +53 -53
  64. package/src/components/MainColors.vue +22 -22
  65. package/src/components/MainInput.vue +15 -15
  66. package/src/components/Modal.astro +27 -27
  67. package/src/components/PageContent.astro +5 -5
  68. package/src/components/PartNumber.vue +27 -27
  69. package/src/components/Post/PostCategories.astro +41 -41
  70. package/src/components/Post/PostCategories.vue +39 -39
  71. package/src/components/PostHeader.astro +103 -103
  72. package/src/components/PrCode.vue +141 -141
  73. package/src/components/Product/ProductButton.vue +18 -18
  74. package/src/components/Product/ProductCarousel.astro +35 -35
  75. package/src/components/Product/ProductCodes.vue +174 -174
  76. package/src/components/Product/ProductEngineType.vue +42 -42
  77. package/src/components/Product/ProductImage.astro +40 -40
  78. package/src/components/Product/ProductLink.astro +101 -101
  79. package/src/components/Product/ProductLink.vue +59 -59
  80. package/src/components/Product/ProductLinkInfo.astro +37 -37
  81. package/src/components/Product/ProductNumber.astro +60 -60
  82. package/src/components/ProductCarousel.astro +38 -38
  83. package/src/components/ProductCodes.vue +39 -39
  84. package/src/components/ProductDetailName.vue +52 -52
  85. package/src/components/ProductDetailsList.vue +65 -65
  86. package/src/components/ProductTile.astro +48 -48
  87. package/src/components/Quote.vue +23 -23
  88. package/src/components/ReloadPrompt.astro +50 -50
  89. package/src/components/SlimBanner.vue +72 -72
  90. package/src/components/Table.vue +32 -32
  91. package/src/components/TableOfContents.astro +15 -15
  92. package/src/components/Translations.vue +23 -23
  93. package/src/components/flags/FlagPL.vue +3 -3
  94. package/src/components/flags/FlagUA.vue +2 -2
  95. package/src/components/layout/Container.astro +7 -7
  96. package/src/components/layout/Header.astro +80 -80
  97. package/src/config.ts +56 -56
  98. package/src/design.config.ts +98 -98
  99. package/src/env.d.ts +6 -6
  100. package/src/layouts/Layout.astro +61 -61
  101. package/src/layouts/MainLayout.astro +81 -81
  102. package/src/layouts/partials/FooterCommon.astro +4 -4
  103. package/src/layouts/partials/HeadCommon.astro +44 -44
  104. package/src/layouts/partials/HeadSEO.astro +41 -41
  105. package/src/pages/components/badges.mdx +57 -57
  106. package/src/pages/components/breadcrumbs.mdx +139 -139
  107. package/src/pages/components/buttons.mdx +360 -360
  108. package/src/pages/components/card.mdx +294 -294
  109. package/src/pages/components/carousel.mdx +62 -62
  110. package/src/pages/components/copyright.mdx +42 -42
  111. package/src/pages/components/details-list.mdx +115 -115
  112. package/src/pages/components/features-list.mdx +37 -37
  113. package/src/pages/components/flags.mdx +49 -49
  114. package/src/pages/components/fuck-russia.mdx +39 -39
  115. package/src/pages/components/hand-drive.mdx +38 -38
  116. package/src/pages/components/headline.mdx +152 -152
  117. package/src/pages/components/icons.astro +135 -135
  118. package/src/pages/components/image.mdx +513 -513
  119. package/src/pages/components/input.mdx +367 -367
  120. package/src/pages/components/jumbotron.mdx +359 -359
  121. package/src/pages/components/modal.mdx +64 -64
  122. package/src/pages/components/post-header.mdx +64 -64
  123. package/src/pages/components/pr-code.mdx +65 -65
  124. package/src/pages/components/product-number.mdx +58 -58
  125. package/src/pages/components/product-tile.mdx +51 -51
  126. package/src/pages/components/quote.mdx +33 -33
  127. package/src/pages/components/slimbanner.mdx +35 -35
  128. package/src/pages/components/table.mdx +108 -108
  129. package/src/pages/core/colors.mdx +10 -10
  130. package/src/pages/core/grid.mdx +89 -89
  131. package/src/pages/core/introduction.mdx +77 -77
  132. package/src/pages/core/shadows.astro +20 -20
  133. package/src/pages/core/typography.astro +49 -49
  134. package/src/pages/index.astro +133 -133
  135. package/src/pages/patterns/introduction.mdx +60 -60
  136. package/src/pwa.ts +12 -12
  137. package/src/styles/_variables.scss +70 -70
  138. package/src/styles/base/base.css +184 -184
  139. package/src/styles/base/grid.css +92 -92
  140. package/src/styles/base/typography.css +70 -70
  141. package/src/styles/content.css +73 -73
  142. package/src/styles/main.css +7 -7
  143. package/src/types/Product.ts +31 -31
  144. package/src/types/astro.d.ts +3 -3
  145. package/src/utils/product/getPriceFormatted.ts +15 -15
  146. package/src/utils/product/getProductChecklist.ts +17 -17
  147. package/src/utils/product/useFormatProductNumber.ts +41 -41
  148. package/src/utils/seo/getShorterDescription.ts +14 -14
  149. package/src/utils/text/formatDate.ts +5 -5
  150. package/src/utils/text/formatLocaleNumber.ts +6 -6
  151. package/src/utils/text/formatPad.ts +12 -12
  152. package/src/utils/text/getNumberFormatted.ts +33 -33
  153. package/src/utils/text/getTranslatedLink.ts +5 -5
  154. package/src/utils/text.ts +19 -19
  155. package/tailwind.config.cjs +8 -8
  156. package/tsconfig.json +28 -28
  157. package/uno-config/index.ts +232 -232
  158. package/uno-config/theme/breakpoints.ts +9 -9
  159. package/uno-config/theme/colors.ts +64 -64
  160. package/uno-config/theme/dimensions.ts +17 -17
  161. package/uno-config/theme/effects.ts +14 -14
  162. package/uno-config/theme/grid.ts +10 -10
  163. package/uno-config/theme/index.ts +28 -28
  164. package/uno-config/theme/shortcuts/buttons.ts +53 -53
  165. package/uno-config/theme/shortcuts/components.ts +92 -92
  166. package/uno-config/theme/shortcuts/index.ts +20 -20
  167. package/uno-config/theme/shortcuts/layout.ts +64 -64
  168. package/uno-config/theme/typography.ts +29 -29
  169. package/uno.config.ts +2 -2
@@ -1,39 +1,39 @@
1
- <script lang="ts" setup>
2
- import type { PropType } from 'vue'
3
- import PrCode from './PrCode.vue';
4
-
5
- const props = defineProps({
6
- prcodes: {
7
- type: Object as PropType<string[] | null>,
8
- default: null,
9
- required: true,
10
- },
11
- isPdp: {
12
- type: Boolean,
13
- default: false,
14
- required: false,
15
- },
16
- })
17
-
18
- const codes = props.prcodes || []
19
- const decodedCodes = codes ? codes.sort() : []
20
-
21
- const settings = {
22
- prcodes: decodedCodes,
23
- }
24
- </script>
25
-
26
- <template>
27
-
28
- <span
29
- v-for="(prcode, index) in settings.prcodes"
30
- :key="index"
31
- class="not-last:mr-1"
32
- >
33
- <PrCode :prcode="prcode" v-if="!String(prcode).includes('+')" />
34
- <span v-else >
35
- <PrCode v-for="(splittedCode, index2) in String(prcode).split('+')" :key="index2" :prcode="splittedCode" />
36
- </span>
37
- </span>
38
- </template>
39
-
1
+ <script lang="ts" setup>
2
+ import type { PropType } from 'vue'
3
+ import PrCode from './PrCode.vue';
4
+
5
+ const props = defineProps({
6
+ prcodes: {
7
+ type: Object as PropType<string[] | null>,
8
+ default: null,
9
+ required: true,
10
+ },
11
+ isPdp: {
12
+ type: Boolean,
13
+ default: false,
14
+ required: false,
15
+ },
16
+ })
17
+
18
+ const codes = props.prcodes || []
19
+ const decodedCodes = codes ? codes.sort() : []
20
+
21
+ const settings = {
22
+ prcodes: decodedCodes,
23
+ }
24
+ </script>
25
+
26
+ <template>
27
+
28
+ <span
29
+ v-for="(prcode, index) in settings.prcodes"
30
+ :key="index"
31
+ class="not-last:mr-1"
32
+ >
33
+ <PrCode :prcode="prcode" v-if="!String(prcode).includes('+')" />
34
+ <span v-else >
35
+ <PrCode v-for="(splittedCode, index2) in String(prcode).split('+')" :key="index2" :prcode="splittedCode" />
36
+ </span>
37
+ </span>
38
+ </template>
39
+
@@ -1,53 +1,53 @@
1
- <script lang="ts" setup>
2
- import { PropType } from 'vue';
3
-
4
- const props = defineProps({
5
- as: {
6
- type: String as PropType< 'th'| 'td' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'div' | 'span'>,
7
- default: 'div',
8
- required: true,
9
- },
10
- text: {
11
- type: String,
12
- default: '',
13
- required: true,
14
- },
15
- styles: {
16
- type: String,
17
- default: '',
18
- required: false,
19
- }
20
- })
21
- </script>
22
-
23
- <template>
24
- <component :is="props.as" class="font-bold detail-name w-full sm:w-50 flex 2xl:w-64">
25
- <span :class="styles && styles.length ? styles : 'mt-auto'">
26
- <b class="bg-white z-1 colon-after pr-1">{{ props.text }}</b>
27
- </span>
28
- </component>
29
- </template>
30
-
31
-
32
- <style>
33
- .detail-name {
34
- @apply overflow-hidden relative;
35
-
36
- span {
37
- @apply block bg-white relative z-10 pr-1.5 w-full;
38
-
39
- &:before {
40
- /* // order: 2; */
41
- @apply text-gray-300 absolute select-none border-b border-gray-200 w-full -z-1 absolute content-empty left-0;
42
- height: 1em;
43
- white-space: nowrap;
44
- font-weight: 100;
45
- bottom: 2px;
46
- flex: 1;
47
- }
48
- }
49
-
50
-
51
- }
52
-
1
+ <script lang="ts" setup>
2
+ import { PropType } from 'vue';
3
+
4
+ const props = defineProps({
5
+ as: {
6
+ type: String as PropType< 'th'| 'td' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'div' | 'span'>,
7
+ default: 'div',
8
+ required: true,
9
+ },
10
+ text: {
11
+ type: String,
12
+ default: '',
13
+ required: true,
14
+ },
15
+ styles: {
16
+ type: String,
17
+ default: '',
18
+ required: false,
19
+ }
20
+ })
21
+ </script>
22
+
23
+ <template>
24
+ <component :is="props.as" class="font-bold detail-name w-full sm:w-50 flex 2xl:w-64">
25
+ <span :class="styles && styles.length ? styles : 'mt-auto'">
26
+ <b class="bg-white z-1 colon-after pr-1">{{ props.text }}</b>
27
+ </span>
28
+ </component>
29
+ </template>
30
+
31
+
32
+ <style>
33
+ .detail-name {
34
+ @apply overflow-hidden relative;
35
+
36
+ span {
37
+ @apply block bg-white relative z-10 pr-1.5 w-full;
38
+
39
+ &:before {
40
+ /* // order: 2; */
41
+ @apply text-gray-300 absolute select-none border-b border-gray-200 w-full -z-1 absolute content-empty left-0;
42
+ height: 1em;
43
+ white-space: nowrap;
44
+ font-weight: 100;
45
+ bottom: 2px;
46
+ flex: 1;
47
+ }
48
+ }
49
+
50
+
51
+ }
52
+
53
53
  </style>
@@ -1,65 +1,65 @@
1
- <script setup lang="ts">
2
- import { PropType } from "vue";
3
- import ProductDetailName from "./ProductDetailName.vue";
4
-
5
- interface TableItem {
6
- id: string,
7
- name: string
8
- value: unknown
9
- }
10
-
11
- const props = defineProps({
12
- items: {type: Array as PropType<TableItem[]>, default: () => []},
13
- caption: { type: String, default: null }
14
- })
15
-
16
- </script>
17
-
18
- <template>
19
- <table class="details table-auto text-left bg-white">
20
- <caption v-if="!!$slots.caption || caption">
21
- <slot name="caption">{{ caption }}</slot>
22
- </caption>
23
- <colgroup>
24
- <col>
25
- <col>
26
- </colgroup>
27
- <tbody>
28
- <tr v-for="row, index in props.items" :key="index">
29
- <ProductDetailName as="th" :text="row.name" />
30
- <slot :name="row.id">
31
- <td>{{ row.value }}</td>
32
- </slot>
33
- </tr>
34
- </tbody>
35
- </table>
36
- </template>
37
-
38
- <style scoped>
39
- .details {
40
- @apply border-none shadow-none w-full md:w-auto
41
- box-shadow: none;
42
-
43
- col {
44
- @apply w-1/2 md:w-auto;
45
-
46
- }
47
-
48
- tr {
49
- @apply border-none;
50
- }
51
-
52
- tr,
53
- th {
54
- @apply leading-none text-3.5 py-2 border-none xl:(py-4) 3xl:(text-4);
55
- }
56
-
57
- th {
58
- @apply px-0;
59
- }
60
-
61
- td {
62
- @apply relative;
63
- }
64
- }
65
- </style>
1
+ <script setup lang="ts">
2
+ import { PropType } from "vue";
3
+ import ProductDetailName from "./ProductDetailName.vue";
4
+
5
+ interface TableItem {
6
+ id: string,
7
+ name: string
8
+ value: unknown
9
+ }
10
+
11
+ const props = defineProps({
12
+ items: {type: Array as PropType<TableItem[]>, default: () => []},
13
+ caption: { type: String, default: null }
14
+ })
15
+
16
+ </script>
17
+
18
+ <template>
19
+ <table class="details table-auto text-left bg-white">
20
+ <caption v-if="!!$slots.caption || caption">
21
+ <slot name="caption">{{ caption }}</slot>
22
+ </caption>
23
+ <colgroup>
24
+ <col>
25
+ <col>
26
+ </colgroup>
27
+ <tbody>
28
+ <tr v-for="row, index in props.items" :key="index">
29
+ <ProductDetailName as="th" :text="row.name" />
30
+ <slot :name="row.id">
31
+ <td>{{ row.value }}</td>
32
+ </slot>
33
+ </tr>
34
+ </tbody>
35
+ </table>
36
+ </template>
37
+
38
+ <style scoped>
39
+ .details {
40
+ @apply border-none shadow-none w-full md:w-auto
41
+ box-shadow: none;
42
+
43
+ col {
44
+ @apply w-1/2 md:w-auto;
45
+
46
+ }
47
+
48
+ tr {
49
+ @apply border-none;
50
+ }
51
+
52
+ tr,
53
+ th {
54
+ @apply leading-none text-3.5 py-2 border-none xl:(py-4) 3xl:(text-4);
55
+ }
56
+
57
+ th {
58
+ @apply px-0;
59
+ }
60
+
61
+ td {
62
+ @apply relative;
63
+ }
64
+ }
65
+ </style>
@@ -1,48 +1,48 @@
1
- ---
2
- const { productObject, locale, index } = Astro.props;
3
- import Image from "./Image.astro"
4
- import ProductNumber from "./Product/ProductNumber.astro"
5
- import { t } from "i18next";
6
- ---
7
-
8
- { productObject &&
9
- (
10
-
11
- <!-- product image -->
12
- <div class="img--4/3 img--small">
13
- { productObject.photo !== null ?
14
- <Image
15
- imageObject={
16
- {
17
- src: 'https://img.freepik.com/darmowe-wektory/tlo-retro-modeli-geometrycznych_52683-17902.jpg?w=1380&t=st=1706311337',
18
- alt: 'Image Alt',
19
- height: '180',
20
- width: '240',
21
- class: 'img--overlay object-cover'
22
- }
23
- }
24
- />
25
- :
26
- <img src="/1x1.png" class="bg-gray-100/70" alt={productObject.name} />
27
- }
28
- </div>
29
-
30
- <!-- product deails -->
31
- <div class="sm:pl-4 flex flex-col" >
32
- <a class="font-light leading-none mb-2 pr-4 line-clamp-2 h-[2em] before:(content-empty absolute left-0 right-4 h-full top-0)"
33
- href={productObject.url} itemprop="url"
34
- title={productObject.number}
35
- >
36
- { productObject.name }
37
- </a>
38
-
39
- <ProductNumber productNumber={productObject.number} copyDisabled={false} buttonTexts={{ copy: t('copy'), copied: t('copied') }} />
40
-
41
- { index !== null &&
42
- ( <meta itemprop="position" content={String(index)} />
43
- <meta itemprop="name" content={productObject.name} /> )
44
- }
45
- </div>
46
-
47
- )}
48
-
1
+ ---
2
+ const { productObject, locale, index } = Astro.props;
3
+ import Image from "./Image.astro"
4
+ import ProductNumber from "./Product/ProductNumber.astro"
5
+ import { t } from "i18next";
6
+ ---
7
+
8
+ { productObject &&
9
+ (
10
+
11
+ <!-- product image -->
12
+ <div class="img--4/3 img--small">
13
+ { productObject.photo !== null ?
14
+ <Image
15
+ imageObject={
16
+ {
17
+ src: 'https://img.freepik.com/darmowe-wektory/tlo-retro-modeli-geometrycznych_52683-17902.jpg?w=1380&t=st=1706311337',
18
+ alt: 'Image Alt',
19
+ height: '180',
20
+ width: '240',
21
+ class: 'img--overlay object-cover'
22
+ }
23
+ }
24
+ />
25
+ :
26
+ <img src="/1x1.png" class="bg-gray-100/70" alt={productObject.name} />
27
+ }
28
+ </div>
29
+
30
+ <!-- product deails -->
31
+ <div class="sm:pl-4 flex flex-col" >
32
+ <a class="font-light leading-none mb-2 pr-4 line-clamp-2 h-[2em] before:(content-empty absolute left-0 right-4 h-full top-0)"
33
+ href={productObject.url} itemprop="url"
34
+ title={productObject.number}
35
+ >
36
+ { productObject.name }
37
+ </a>
38
+
39
+ <ProductNumber productNumber={productObject.number} copyDisabled={false} buttonTexts={{ copy: t('copy'), copied: t('copied') }} />
40
+
41
+ { index !== null &&
42
+ ( <meta itemprop="position" content={String(index)} />
43
+ <meta itemprop="name" content={productObject.name} /> )
44
+ }
45
+ </div>
46
+
47
+ )}
48
+
@@ -1,23 +1,23 @@
1
- <script setup lang="ts">
2
- import { PropType } from 'vue';
3
-
4
- const props = defineProps({
5
- as: {
6
- type: String as PropType<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'div' | 'span'>,
7
- default: 'div',
8
- required: false,
9
- },
10
- text: {
11
- type: String,
12
- default: '',
13
- required: false,
14
- }
15
- })
16
- </script>
17
-
18
- <template>
19
- <component :is="props.as"
20
- class="px-8 sm:px-8 mx-4 sm:mx-6 lg:max-w-4xl drop-shadow-primary text-2xl md:text-4xl lg:text-4.5xl relative font-light after:left-0 after:content-empty after:rounded-3xl after:top-0 after:absolute after:h-full after:border-solid after:border-[var(--primary)] after:border-l-3 after:z-0">
21
- <slot>{{ props.text }}</slot>
22
- </component>
23
- </template>
1
+ <script setup lang="ts">
2
+ import { PropType } from 'vue';
3
+
4
+ const props = defineProps({
5
+ as: {
6
+ type: String as PropType<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'div' | 'span'>,
7
+ default: 'div',
8
+ required: false,
9
+ },
10
+ text: {
11
+ type: String,
12
+ default: '',
13
+ required: false,
14
+ }
15
+ })
16
+ </script>
17
+
18
+ <template>
19
+ <component :is="props.as"
20
+ class="px-8 sm:px-8 mx-4 sm:mx-6 lg:max-w-4xl drop-shadow-primary text-2xl md:text-4xl lg:text-4.5xl relative font-light after:left-0 after:content-empty after:rounded-3xl after:top-0 after:absolute after:h-full after:border-solid after:border-[var(--primary)] after:border-l-3 after:z-0">
21
+ <slot>{{ props.text }}</slot>
22
+ </component>
23
+ </template>
@@ -1,51 +1,51 @@
1
- <script src="./../pwa.ts"></script>
2
- <div
3
- id="pwa-toast"
4
- role="alert"
5
- aria-labelledby="toast-message"
6
- >
7
- <div class="message">
8
- <span id="toast-message"></span>
9
- </div>
10
- <button id="pwa-refresh">
11
- Reload
12
- </button>
13
- <button id="pwa-close">
14
- Close
15
- </button>
16
- </div>
17
-
18
- <style>
19
- #pwa-toast {
20
- visibility: hidden;
21
- position: fixed;
22
- right: 0;
23
- bottom: 0;
24
- margin: 16px;
25
- padding: 12px;
26
- border: 1px solid #8885;
27
- border-radius: 4px;
28
- z-index: 1;
29
- text-align: left;
30
- box-shadow: 3px 4px 5px 0 #8885;
31
- }
32
- #pwa-toast .message {
33
- margin-bottom: 8px;
34
- }
35
- #pwa-toast button {
36
- border: 1px solid #8885;
37
- outline: none;
38
- margin-right: 5px;
39
- border-radius: 2px;
40
- padding: 3px 10px;
41
- }
42
- #pwa-toast.show {
43
- visibility: visible;
44
- }
45
- button#pwa-refresh {
46
- display: none;
47
- }
48
- #pwa-toast.show.refresh button#pwa-refresh {
49
- display: inline-block;
50
- }
1
+ <script src="./../pwa.ts"></script>
2
+ <div
3
+ id="pwa-toast"
4
+ role="alert"
5
+ aria-labelledby="toast-message"
6
+ >
7
+ <div class="message">
8
+ <span id="toast-message"></span>
9
+ </div>
10
+ <button id="pwa-refresh">
11
+ Reload
12
+ </button>
13
+ <button id="pwa-close">
14
+ Close
15
+ </button>
16
+ </div>
17
+
18
+ <style>
19
+ #pwa-toast {
20
+ visibility: hidden;
21
+ position: fixed;
22
+ right: 0;
23
+ bottom: 0;
24
+ margin: 16px;
25
+ padding: 12px;
26
+ border: 1px solid #8885;
27
+ border-radius: 4px;
28
+ z-index: 1;
29
+ text-align: left;
30
+ box-shadow: 3px 4px 5px 0 #8885;
31
+ }
32
+ #pwa-toast .message {
33
+ margin-bottom: 8px;
34
+ }
35
+ #pwa-toast button {
36
+ border: 1px solid #8885;
37
+ outline: none;
38
+ margin-right: 5px;
39
+ border-radius: 2px;
40
+ padding: 3px 10px;
41
+ }
42
+ #pwa-toast.show {
43
+ visibility: visible;
44
+ }
45
+ button#pwa-refresh {
46
+ display: none;
47
+ }
48
+ #pwa-toast.show.refresh button#pwa-refresh {
49
+ display: inline-block;
50
+ }
51
51
  </style>