@prokodo/ui 0.1.2 → 0.1.3

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 (54) hide show
  1. package/README.md +1 -0
  2. package/dist/components/accordion/Accordion.base.module.scss.js +6 -1
  3. package/dist/components/accordion/Accordion.view.js +73 -48
  4. package/dist/components/card/Card.view.js +0 -1
  5. package/dist/components/dialog/Dialog.view.js +76 -62
  6. package/dist/components/form/Form.view.js +78 -67
  7. package/dist/components/form/FormField.client.js +18 -1
  8. package/dist/components/image/Image.client.js +2 -2
  9. package/dist/components/image/Image.js +1 -1
  10. package/dist/components/image/Image.lazy.js +1 -1
  11. package/dist/components/image/Image.server.js +7 -9
  12. package/dist/components/post-teaser/PostTeaser.view.js +9 -5
  13. package/dist/components/post-widget/PostWidget.view.js +1 -3
  14. package/dist/components/post-widget-carousel/PostWidgetCarousel.view.js +1 -3
  15. package/dist/components/rating/Rating.client.js +162 -0
  16. package/dist/components/rating/Rating.js +12 -0
  17. package/dist/components/rating/Rating.lazy.js +12 -0
  18. package/dist/components/rating/Rating.module.scss.js +22 -0
  19. package/dist/components/rating/Rating.server.js +11 -0
  20. package/dist/components/rating/Rating.validation.js +18 -0
  21. package/dist/components/rating/Rating.view.js +165 -0
  22. package/dist/components/rating/index.js +4 -0
  23. package/dist/components/snackbar/Snackbar.module.scss.js +2 -3
  24. package/dist/components/snackbar/Snackbar.view.js +20 -4
  25. package/dist/constants/project.js +1 -1
  26. package/dist/helpers/createIsland.js +17 -9
  27. package/dist/helpers/createLazyWrapper.js +9 -8
  28. package/dist/index.js +2 -0
  29. package/dist/tsconfig.build.tsbuildinfo +1 -1
  30. package/dist/types/components/accordion/Accordion.model.d.ts +1 -0
  31. package/dist/types/components/card/Card.model.d.ts +2 -3
  32. package/dist/types/components/dialog/Dialog.model.d.ts +1 -0
  33. package/dist/types/components/dialog/Dialog.view.d.ts +1 -1
  34. package/dist/types/components/form/Form.model.d.ts +7 -3
  35. package/dist/types/components/image/Image.d.ts +26 -2
  36. package/dist/types/components/image/Image.lazy.d.ts +26 -2
  37. package/dist/types/components/image/Image.model.d.ts +2 -7
  38. package/dist/types/components/post-teaser/PostTeaser.view.d.ts +1 -1
  39. package/dist/types/components/post-widget/PostWidget.view.d.ts +1 -1
  40. package/dist/types/components/post-widget-carousel/PostWidgetCarousel.view.d.ts +1 -1
  41. package/dist/types/components/rating/Rating.client.d.ts +5 -0
  42. package/dist/types/components/rating/Rating.d.ts +4 -0
  43. package/dist/types/components/rating/Rating.lazy.d.ts +5 -0
  44. package/dist/types/components/rating/Rating.model.d.ts +52 -0
  45. package/dist/types/components/rating/Rating.server.d.ts +3 -0
  46. package/dist/types/components/rating/Rating.validation.d.ts +2 -0
  47. package/dist/types/components/rating/Rating.view.d.ts +3 -0
  48. package/dist/types/components/rating/index.d.ts +2 -0
  49. package/dist/types/components/snackbar/Snackbar.model.d.ts +4 -1
  50. package/dist/types/components/snackbar/Snackbar.view.d.ts +1 -1
  51. package/dist/types/components/snackbar/SnackbarProvider.model.d.ts +3 -13
  52. package/dist/types/index.d.ts +1 -0
  53. package/dist/ui.css +298 -26
  54. package/package.json +5 -1
package/dist/ui.css CHANGED
@@ -144,8 +144,34 @@
144
144
  display: flex;
145
145
  align-items: center;
146
146
  justify-content: space-between;
147
- padding: 16px;
147
+ padding: 1rem;
148
+ cursor: pointer;
149
+ }
150
+ .prokodo-Accordion__header__toggle {
151
+ flex: 1 1;
152
+ display: flex;
153
+ align-items: center;
154
+ justify-content: space-between;
155
+ padding: 1rem;
148
156
  cursor: pointer;
157
+ gap: 0.75rem;
158
+ }
159
+ .prokodo-Accordion__header__actions {
160
+ display: flex;
161
+ gap: 0.5rem;
162
+ }
163
+ .prokodo-Accordion__header__actions__wrapper {
164
+ display: flex;
165
+ }
166
+ .prokodo-Accordion__header__icons {
167
+ display: flex;
168
+ align-items: center;
169
+ padding-left: 1rem;
170
+ }
171
+ .prokodo-Accordion__header__wrapper {
172
+ display: flex;
173
+ align-items: center;
174
+ justify-content: space-between;
149
175
  /* reserve space for a “border” without layout jump */
150
176
  border: 2px solid transparent;
151
177
  border-radius: 12px;
@@ -157,14 +183,14 @@
157
183
  background-repeat: no-repeat;
158
184
  transition: color 0.3s ease, background-size 0.35s ease;
159
185
  }
160
- .prokodo-Accordion__header:hover, .prokodo-Accordion__header:focus-visible {
186
+ .prokodo-Accordion__header__wrapper:hover, .prokodo-Accordion__header__wrapper:focus-visible {
161
187
  /* reveal the border layer */
162
188
  background-size: 100% 100%, 200% 100%;
163
189
  /* animation name is defined in the EFFECTS sheet */
164
190
  animation: accordionBorderShift 2s linear;
165
191
  outline: none;
166
192
  }
167
- .prokodo-Accordion__header--is-expanded {
193
+ .prokodo-Accordion__header__wrapper--is-expanded {
168
194
  position: relative;
169
195
  z-index: 2;
170
196
  /* keep border visible and settled */
@@ -6111,7 +6137,6 @@ html[data-theme=dark] .prokodo-Select__helperText {
6111
6137
  text-transform: none;
6112
6138
  text-align: left;
6113
6139
  text-decoration: none;
6114
- font-weight: 500;
6115
6140
  }
6116
6141
  @media screen and (min-width: 480px) {
6117
6142
  .prokodo-List__item {
@@ -6125,6 +6150,9 @@ html[data-theme=dark] .prokodo-Select__helperText {
6125
6150
  line-height: 1.5;
6126
6151
  }
6127
6152
  }
6153
+ .prokodo-List__item {
6154
+ font-weight: 500;
6155
+ }
6128
6156
  .prokodo-List__item--has-icon {
6129
6157
  flex-wrap: nowrap;
6130
6158
  }
@@ -6199,7 +6227,6 @@ html[data-theme=dark] .prokodo-List__item__icon {
6199
6227
  text-transform: none;
6200
6228
  text-align: left;
6201
6229
  text-decoration: none;
6202
- font-weight: 500;
6203
6230
  }
6204
6231
  @media screen and (min-width: 480px) {
6205
6232
  .prokodo-List__item__title--card {
@@ -6213,6 +6240,9 @@ html[data-theme=dark] .prokodo-List__item__icon {
6213
6240
  line-height: 1.5;
6214
6241
  }
6215
6242
  }
6243
+ .prokodo-List__item__title--card {
6244
+ font-weight: 500;
6245
+ }
6216
6246
  .prokodo-List__item__content {
6217
6247
  width: calc(100% - 2rem);
6218
6248
  }
@@ -6268,7 +6298,6 @@ html[data-theme=dark] .prokodo-List__item__icon {
6268
6298
  text-transform: none;
6269
6299
  text-align: left;
6270
6300
  text-decoration: none;
6271
- font-weight: 500;
6272
6301
  }
6273
6302
  @media screen and (min-width: 480px) {
6274
6303
  .prokodo-List__item--is-clickable a {
@@ -6282,6 +6311,9 @@ html[data-theme=dark] .prokodo-List__item__icon {
6282
6311
  line-height: 1.5;
6283
6312
  }
6284
6313
  }
6314
+ .prokodo-List__item--is-clickable a {
6315
+ font-weight: 500;
6316
+ }
6285
6317
  .prokodo-List__item--is-clickable:hover span[role=presentation] {
6286
6318
  color: var(--color-primary-500);
6287
6319
  }
@@ -8438,6 +8470,252 @@ html[data-theme=dark] .prokodo-List__item__icon {
8438
8470
  font-size: 1rem;
8439
8471
  line-height: 1.45;
8440
8472
  }
8473
+ }/* stylelint-disable */
8474
+ /**
8475
+ * Calculates a rem-based value by a given pixel size.
8476
+ */
8477
+ /* stylelint-disable */
8478
+ /**
8479
+ * Applies flex-column and gap.
8480
+ */
8481
+ /*
8482
+ As example (light, primary)
8483
+ See defined modes in designsystem/config/gradients
8484
+ */
8485
+ /**
8486
+ * Mixin that renders a media query that target screens that are larger than the
8487
+ * given size.
8488
+ */
8489
+ /**
8490
+ * Mixin that renders a media query that target screens that are smaller than the
8491
+ * given size.
8492
+ */
8493
+ /**
8494
+ * Mixin that renders a media query that target screens in between the given range.
8495
+ */
8496
+ /**
8497
+ * Mixin that renders a media query that target screens that have height larger than the
8498
+ * given size.
8499
+ */
8500
+ /**
8501
+ * Mixin that renders a media query that target screens that have height smaller than the
8502
+ * given size.
8503
+ */
8504
+ /* stylelint-disable */
8505
+ /* M3/Elevation Light/1 */
8506
+ /* M3/Elevation Light/2 */
8507
+ /* M3/Elevation/5 */
8508
+ /* M3/Elevation/1 Text */
8509
+ /* Inner elevations */
8510
+ /* stylelint-disable */
8511
+ /**
8512
+ * Visually hides an element but not removes them for screen readers.
8513
+ */
8514
+ /**
8515
+ * The inverse of the `hidden` helper to reset a previously hidden element to be
8516
+ * visible for users.
8517
+ */
8518
+ /**
8519
+ * Creates a selector for :hover effects depending on the current user input
8520
+ * device. If the input device is a mouse, this hover effect will appear.
8521
+ * Keyboard and touch inputs are ignored.
8522
+ *
8523
+ * Example usage:
8524
+ * .link {
8525
+ * color: blue;
8526
+ *
8527
+ * @include when-hovered() {
8528
+ * color: green;
8529
+ * }
8530
+ * }
8531
+ */
8532
+ /**
8533
+ * Creates a selector for :active effects depending on the current user input
8534
+ * device. The state applies when the input device is a mouse or keyboard. Touch
8535
+ * devices will not show a pressed state.
8536
+ *
8537
+ * Example usage:
8538
+ * .link {
8539
+ * box-shadow: none;
8540
+ *
8541
+ * @include when-pressed() {
8542
+ * box-shadow: inset 0 2px 4px grey;
8543
+ * }
8544
+ * }
8545
+ */
8546
+ /**
8547
+ * Creates a selector for :focus effects depending on the current user input
8548
+ * device. When the user navigates using a keyboard, the focus effect defined in
8549
+ * here is applied. For other input devices they don't show up.
8550
+ *
8551
+ * Example usage:
8552
+ * .link {
8553
+ * text-decoration: none;
8554
+ *
8555
+ * @include when-focused() {
8556
+ * text-decoration: underline;
8557
+ * }
8558
+ * }
8559
+ */
8560
+ /**
8561
+ * Creates a selector for :focus-within effects depending on the current user
8562
+ * input device. When the user navigates using a keyboard, the focus effect
8563
+ * defined in here is applied. For other input devices they don't show up.
8564
+ *
8565
+ * Example usage:
8566
+ * .link {
8567
+ * img {
8568
+ * opacity: 0.75;
8569
+ *
8570
+ * @include when-focused-within() {
8571
+ * opacity: 1;
8572
+ * }
8573
+ * }
8574
+ * }
8575
+ */
8576
+ /**
8577
+ * Wrapper for media query "prefers-reduced-motion".
8578
+ */
8579
+ /**
8580
+ * This helper hides the outline but still makes it visible for
8581
+ * Windows high-contrast users. Use this instead of `outline: 0;`.
8582
+ */
8583
+ /**
8584
+ * This helper hides the outline but still makes it visible for
8585
+ * Windows high-contrast users. Use this instead of `outline: 0;`.
8586
+ */
8587
+ /**
8588
+ * Renders an alternative, but application consistent focus-ring.
8589
+ */
8590
+ /**
8591
+ * Specifies the outer layout for all contents across breakpoints. Apply this
8592
+ * mixin to the container element, to center the contents on the screen within
8593
+ * the layout offsets.
8594
+ */
8595
+ /**
8596
+ * This mixin specifies basic text-styles for components that render a richtext
8597
+ * content.
8598
+ */
8599
+ .prokodo-Rating {
8600
+ position: relative;
8601
+ display: flex;
8602
+ flex-direction: column;
8603
+ width: 100%;
8604
+ }
8605
+ .prokodo-Rating--full-width {
8606
+ width: 100%;
8607
+ }
8608
+ .prokodo-Rating__inner {
8609
+ position: relative;
8610
+ }
8611
+ .prokodo-Rating__label {
8612
+ padding-bottom: 0.5rem;
8613
+ color: var(--color-grey-600);
8614
+ z-index: 1;
8615
+ pointer-events: none;
8616
+ }
8617
+ @media screen and (min-width: 960px) {
8618
+ .prokodo-Rating__label {
8619
+ font-size: 1.125rem;
8620
+ padding: 0;
8621
+ }
8622
+ }
8623
+ .prokodo-Rating__field {
8624
+ position: relative;
8625
+ }
8626
+ .prokodo-Rating__group {
8627
+ display: flex;
8628
+ align-items: center;
8629
+ gap: 1rem;
8630
+ padding: 0.75rem 0;
8631
+ }
8632
+ .prokodo-Rating__icon {
8633
+ border: none;
8634
+ background: transparent;
8635
+ padding: 0;
8636
+ margin: 0;
8637
+ cursor: pointer;
8638
+ font-size: 1.5rem;
8639
+ line-height: 1;
8640
+ display: inline-flex;
8641
+ align-items: center;
8642
+ justify-content: center;
8643
+ color: var(--color-grey-300);
8644
+ transition: transform 0.1s ease, color 0.15s ease;
8645
+ }
8646
+ .prokodo-Rating__icon__symbol {
8647
+ display: inline-block;
8648
+ }
8649
+ .prokodo-Rating__icon__sr-only {
8650
+ position: absolute;
8651
+ top: auto;
8652
+ left: -99999px;
8653
+ width: 0;
8654
+ height: 0;
8655
+ text-indent: -99999px;
8656
+ }
8657
+ .prokodo-Rating__icon--filled {
8658
+ color: var(--color-primary-500);
8659
+ }
8660
+ .prokodo-Rating__icon--selected {
8661
+ transform: scale(1.05);
8662
+ }
8663
+ .prokodo-Rating__icon--disabled {
8664
+ cursor: not-allowed;
8665
+ color: var(--color-grey-200);
8666
+ }
8667
+ .prokodo-Rating__icon--readonly {
8668
+ cursor: default;
8669
+ }
8670
+ .prokodo-Rating__icon:hover {
8671
+ transform: scale(1.05);
8672
+ }
8673
+ .prokodo-Rating__icon:focus-visible {
8674
+ outline: 2px solid var(--color-primary-500);
8675
+ outline-offset: 2px;
8676
+ border-radius: 999px;
8677
+ }
8678
+ .prokodo-Rating__footer {
8679
+ width: 100%;
8680
+ display: flex;
8681
+ justify-content: flex-start;
8682
+ padding-top: 0.5rem;
8683
+ }
8684
+ .prokodo-Rating__helperText {
8685
+ width: 100%;
8686
+ padding-top: 0.75rem;
8687
+ display: flex;
8688
+ color: var(--color-grey-300);
8689
+ font-weight: 400;
8690
+ font-size: 1rem;
8691
+ font-family: var(--font-secondary), -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
8692
+ font-style: normal;
8693
+ line-height: 1.45;
8694
+ letter-spacing: 0.03em;
8695
+ text-transform: none;
8696
+ text-align: left;
8697
+ text-decoration: none;
8698
+ }
8699
+ @media screen and (min-width: 480px) {
8700
+ .prokodo-Rating__helperText {
8701
+ font-size: 0.875rem;
8702
+ line-height: 1.4;
8703
+ }
8704
+ }
8705
+ @media screen and (min-width: 960px) {
8706
+ .prokodo-Rating__helperText {
8707
+ font-size: 0.875rem;
8708
+ line-height: 1.4;
8709
+ }
8710
+ }
8711
+ html[data-theme=dark] .prokodo-Rating__helperText {
8712
+ color: var(--color-grey-700);
8713
+ }
8714
+ .prokodo-Rating__helperText__content {
8715
+ width: 100%;
8716
+ }
8717
+ .prokodo-Rating__helperText__content--is-error {
8718
+ color: var(--color-error);
8441
8719
  }
8442
8720
  /* stylelint-disable */
8443
8721
  /**
@@ -8704,6 +8982,7 @@ html[data-theme=dark] .prokodo-List__item__icon {
8704
8982
  border-radius: 13px;
8705
8983
  }
8706
8984
  .prokodo-SideNav__label {
8985
+ animation: label-in 150ms ease forwards;
8707
8986
  font-weight: 400;
8708
8987
  font-size: 1.125rem;
8709
8988
  font-family: var(--font-secondary), -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
@@ -8713,7 +8992,6 @@ html[data-theme=dark] .prokodo-List__item__icon {
8713
8992
  text-transform: none;
8714
8993
  text-align: left;
8715
8994
  text-decoration: none;
8716
- animation: label-in 150ms ease forwards;
8717
8995
  }
8718
8996
  @media screen and (min-width: 480px) {
8719
8997
  .prokodo-SideNav__label {
@@ -8876,6 +9154,7 @@ html[data-theme=dark] .prokodo-List__item__icon {
8876
9154
  }
8877
9155
  .prokodo-Snackbar--warning {
8878
9156
  background-color: var(--color-warning);
9157
+ color: var(--color-black);
8879
9158
  }
8880
9159
  .prokodo-Snackbar--info {
8881
9160
  background-color: var(--color-info);
@@ -8910,44 +9189,37 @@ html[data-theme=dark] .prokodo-List__item__icon {
8910
9189
  }
8911
9190
 
8912
9191
  .prokodo-SnackbarProvider {
8913
- position: "fixed";
8914
- display: "flex";
8915
- flex-direction: "column";
9192
+ position: absolute;
9193
+ display: flex;
9194
+ flex-direction: column;
8916
9195
  gap: 8;
8917
9196
  z-index: 9000;
8918
- pointer-events: "none";
9197
+ pointer-events: none;
8919
9198
  }
8920
9199
  .prokodo-SnackbarProvider--is-top {
8921
- inset-block-start: 16px;
8922
- inset-block-end: auto;
9200
+ top: 0;
8923
9201
  }
8924
9202
  .prokodo-SnackbarProvider--is-bottom {
8925
- inset-block-start: auto;
8926
- inset-block-end: 16px;
9203
+ bottom: 0;
9204
+ }
9205
+ .prokodo-SnackbarProvider--is-center {
9206
+ left: 50%;
9207
+ transform: translateX(-50%);
8927
9208
  }
8928
9209
  .prokodo-SnackbarProvider--is-left {
8929
- inset-inline-start: 16px;
8930
- inset-inline-end: auto;
9210
+ left: 1rem;
8931
9211
  }
8932
9212
  .prokodo-SnackbarProvider--is-right {
8933
- inset-inline-start: auto;
8934
- inset-inline-end: 16px;
9213
+ right: 1rem;
8935
9214
  }
8936
9215
  .prokodo-SnackbarProvider__snackbar {
8937
9216
  pointer-events: auto;
8938
- margin: 0 0 1rem 0;
8939
9217
  }
8940
9218
  .prokodo-SnackbarProvider__snackbar--is-top {
8941
9219
  margin-top: 1rem;
8942
9220
  }
8943
9221
  .prokodo-SnackbarProvider__snackbar--is-bottom {
8944
9222
  margin-bottom: 1rem;
8945
- }
8946
- .prokodo-SnackbarProvider__snackbar--is-left {
8947
- margin-left: 1rem;
8948
- }
8949
- .prokodo-SnackbarProvider__snackbar--is-right {
8950
- margin-right: 1rem;
8951
9223
  }/* stylelint-disable */
8952
9224
  /**
8953
9225
  * Calculates a rem-based value by a given pixel size.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prokodo/ui",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "type": "module",
5
5
  "description": "UI components for production-grade Next.js + Headless CMS (Strapi, Contentful, Headless WordPress) websites by prokodo – built for Core Web Vitals & SEO.",
6
6
  "sideEffects": false,
@@ -160,6 +160,10 @@
160
160
  "import": "./dist/components/quote/index.js",
161
161
  "types": "./dist/types/components/quote/index.d.ts"
162
162
  },
163
+ "./rating": {
164
+ "import": "./dist/components/rating/index.js",
165
+ "types": "./dist/types/components/rating/index.d.ts"
166
+ },
163
167
  "./rich-text": {
164
168
  "import": "./dist/components/rich-text/index.js",
165
169
  "types": "./dist/types/components/rich-text/index.d.ts"