@helpwave/hightide 0.1.26 → 0.1.27

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 (204) hide show
  1. package/dist/components/date/DatePicker.js +1 -1
  2. package/dist/components/date/DatePicker.js.map +1 -1
  3. package/dist/components/date/DatePicker.mjs +1 -1
  4. package/dist/components/date/DatePicker.mjs.map +1 -1
  5. package/dist/components/date/YearMonthPicker.js +1 -1
  6. package/dist/components/date/YearMonthPicker.js.map +1 -1
  7. package/dist/components/date/YearMonthPicker.mjs +1 -1
  8. package/dist/components/date/YearMonthPicker.mjs.map +1 -1
  9. package/dist/components/dialog/ConfirmDialog.d.mts +1 -1
  10. package/dist/components/dialog/ConfirmDialog.d.ts +1 -1
  11. package/dist/components/dialog/ConfirmDialog.js +2 -2
  12. package/dist/components/dialog/ConfirmDialog.js.map +1 -1
  13. package/dist/components/dialog/ConfirmDialog.mjs +2 -2
  14. package/dist/components/dialog/ConfirmDialog.mjs.map +1 -1
  15. package/dist/components/dialog/Dialog.d.mts +1 -1
  16. package/dist/components/dialog/Dialog.d.ts +1 -1
  17. package/dist/components/dialog/Dialog.js +2 -2
  18. package/dist/components/dialog/Dialog.js.map +1 -1
  19. package/dist/components/dialog/Dialog.mjs +2 -2
  20. package/dist/components/dialog/Dialog.mjs.map +1 -1
  21. package/dist/components/dialog/DiscardChangesDialog.d.mts +1 -1
  22. package/dist/components/dialog/DiscardChangesDialog.d.ts +1 -1
  23. package/dist/components/dialog/DiscardChangesDialog.js +2 -2
  24. package/dist/components/dialog/DiscardChangesDialog.js.map +1 -1
  25. package/dist/components/dialog/DiscardChangesDialog.mjs +2 -2
  26. package/dist/components/dialog/DiscardChangesDialog.mjs.map +1 -1
  27. package/dist/components/dialog/InputDialog.d.mts +1 -1
  28. package/dist/components/dialog/InputDialog.d.ts +1 -1
  29. package/dist/components/dialog/InputDialog.js +2 -2
  30. package/dist/components/dialog/InputDialog.js.map +1 -1
  31. package/dist/components/dialog/InputDialog.mjs +2 -2
  32. package/dist/components/dialog/InputDialog.mjs.map +1 -1
  33. package/dist/components/dialog/LanguageDialog.d.mts +1 -1
  34. package/dist/components/dialog/LanguageDialog.d.ts +1 -1
  35. package/dist/components/dialog/LanguageDialog.js +28 -15
  36. package/dist/components/dialog/LanguageDialog.js.map +1 -1
  37. package/dist/components/dialog/LanguageDialog.mjs +28 -15
  38. package/dist/components/dialog/LanguageDialog.mjs.map +1 -1
  39. package/dist/components/dialog/ThemeDialog.d.mts +1 -1
  40. package/dist/components/dialog/ThemeDialog.d.ts +1 -1
  41. package/dist/components/dialog/ThemeDialog.js +69 -33
  42. package/dist/components/dialog/ThemeDialog.js.map +1 -1
  43. package/dist/components/dialog/ThemeDialog.mjs +60 -24
  44. package/dist/components/dialog/ThemeDialog.mjs.map +1 -1
  45. package/dist/components/dialog/index.d.mts +1 -1
  46. package/dist/components/dialog/index.d.ts +1 -1
  47. package/dist/components/dialog/index.js +61 -25
  48. package/dist/components/dialog/index.js.map +1 -1
  49. package/dist/components/dialog/index.mjs +61 -25
  50. package/dist/components/dialog/index.mjs.map +1 -1
  51. package/dist/components/layout/Carousel.d.mts +33 -0
  52. package/dist/components/layout/Carousel.d.ts +33 -0
  53. package/dist/components/layout/Carousel.js +684 -0
  54. package/dist/components/layout/Carousel.js.map +1 -0
  55. package/dist/components/layout/Carousel.mjs +659 -0
  56. package/dist/components/layout/Carousel.mjs.map +1 -0
  57. package/dist/components/{layout-and-navigation → layout}/Chip.js +1 -1
  58. package/dist/components/layout/Chip.js.map +1 -0
  59. package/dist/components/{layout-and-navigation → layout}/Chip.mjs +1 -1
  60. package/dist/components/layout/Chip.mjs.map +1 -0
  61. package/dist/components/{layout-and-navigation → layout}/DividerInserter.js +1 -1
  62. package/dist/components/layout/DividerInserter.js.map +1 -0
  63. package/dist/components/{layout-and-navigation → layout}/DividerInserter.mjs +1 -1
  64. package/dist/components/layout/DividerInserter.mjs.map +1 -0
  65. package/dist/components/{layout-and-navigation → layout}/Expandable.js +2 -2
  66. package/dist/components/layout/Expandable.js.map +1 -0
  67. package/dist/components/{layout-and-navigation → layout}/Expandable.mjs +2 -2
  68. package/dist/components/layout/Expandable.mjs.map +1 -0
  69. package/dist/components/{layout-and-navigation → layout}/FAQSection.js +5 -5
  70. package/dist/components/layout/FAQSection.js.map +1 -0
  71. package/dist/components/{layout-and-navigation → layout}/FAQSection.mjs +5 -5
  72. package/dist/components/layout/FAQSection.mjs.map +1 -0
  73. package/dist/components/{layout-and-navigation → layout}/FloatingContainer.js +2 -2
  74. package/dist/components/layout/FloatingContainer.js.map +1 -0
  75. package/dist/components/{layout-and-navigation → layout}/FloatingContainer.mjs +2 -2
  76. package/dist/components/layout/FloatingContainer.mjs.map +1 -0
  77. package/dist/components/{layout-and-navigation → layout}/ListBox.js +2 -2
  78. package/dist/components/layout/ListBox.js.map +1 -0
  79. package/dist/components/{layout-and-navigation → layout}/ListBox.mjs +2 -2
  80. package/dist/components/layout/ListBox.mjs.map +1 -0
  81. package/dist/components/{layout-and-navigation → layout}/MarkdownInterpreter.js +1 -1
  82. package/dist/components/layout/MarkdownInterpreter.js.map +1 -0
  83. package/dist/components/{layout-and-navigation → layout}/MarkdownInterpreter.mjs +1 -1
  84. package/dist/components/layout/MarkdownInterpreter.mjs.map +1 -0
  85. package/dist/components/{layout-and-navigation → layout}/ScrollArea.js +2 -2
  86. package/dist/components/layout/ScrollArea.js.map +1 -0
  87. package/dist/components/{layout-and-navigation → layout}/ScrollArea.mjs +1 -1
  88. package/dist/components/layout/ScrollArea.mjs.map +1 -0
  89. package/dist/components/{layout-and-navigation → layout}/TextImage.js +3 -3
  90. package/dist/components/layout/TextImage.js.map +1 -0
  91. package/dist/components/{layout-and-navigation → layout}/TextImage.mjs +2 -2
  92. package/dist/components/layout/TextImage.mjs.map +1 -0
  93. package/dist/components/{layout-and-navigation → layout}/VerticalDivider.js +1 -1
  94. package/dist/components/layout/VerticalDivider.js.map +1 -0
  95. package/dist/components/{layout-and-navigation → layout}/VerticalDivider.mjs +1 -1
  96. package/dist/components/layout/VerticalDivider.mjs.map +1 -0
  97. package/dist/components/{layout-and-navigation → navigation}/BreadCrumb.js +1 -1
  98. package/dist/components/navigation/BreadCrumb.js.map +1 -0
  99. package/dist/components/{layout-and-navigation → navigation}/BreadCrumb.mjs +1 -1
  100. package/dist/components/navigation/BreadCrumb.mjs.map +1 -0
  101. package/dist/components/navigation/Navigation.d.mts +21 -0
  102. package/dist/components/navigation/Navigation.d.ts +21 -0
  103. package/dist/components/navigation/Navigation.js +4018 -0
  104. package/dist/components/navigation/Navigation.js.map +1 -0
  105. package/dist/components/navigation/Navigation.mjs +4012 -0
  106. package/dist/components/navigation/Navigation.mjs.map +1 -0
  107. package/dist/components/{layout-and-navigation → navigation}/Pagination.js +3 -3
  108. package/dist/components/navigation/Pagination.js.map +1 -0
  109. package/dist/components/{layout-and-navigation → navigation}/Pagination.mjs +3 -3
  110. package/dist/components/navigation/Pagination.mjs.map +1 -0
  111. package/dist/components/{layout-and-navigation → navigation}/StepperBar.js +3 -3
  112. package/dist/components/navigation/StepperBar.js.map +1 -0
  113. package/dist/components/{layout-and-navigation → navigation}/StepperBar.mjs +3 -3
  114. package/dist/components/navigation/StepperBar.mjs.map +1 -0
  115. package/dist/components/properties/MultiSelectProperty.js +27 -14
  116. package/dist/components/properties/MultiSelectProperty.js.map +1 -1
  117. package/dist/components/properties/MultiSelectProperty.mjs +27 -14
  118. package/dist/components/properties/MultiSelectProperty.mjs.map +1 -1
  119. package/dist/components/properties/SelectProperty.js +27 -14
  120. package/dist/components/properties/SelectProperty.js.map +1 -1
  121. package/dist/components/properties/SelectProperty.mjs +27 -14
  122. package/dist/components/properties/SelectProperty.mjs.map +1 -1
  123. package/dist/components/table/Table.js +1 -1
  124. package/dist/components/table/Table.js.map +1 -1
  125. package/dist/components/table/Table.mjs +1 -1
  126. package/dist/components/table/Table.mjs.map +1 -1
  127. package/dist/components/user-action/DateAndTimePicker.js +1 -1
  128. package/dist/components/user-action/DateAndTimePicker.js.map +1 -1
  129. package/dist/components/user-action/DateAndTimePicker.mjs +1 -1
  130. package/dist/components/user-action/DateAndTimePicker.mjs.map +1 -1
  131. package/dist/components/user-action/select/Select.d.mts +5 -1
  132. package/dist/components/user-action/select/Select.d.ts +5 -1
  133. package/dist/components/user-action/select/Select.js +27 -14
  134. package/dist/components/user-action/select/Select.js.map +1 -1
  135. package/dist/components/user-action/select/Select.mjs +27 -14
  136. package/dist/components/user-action/select/Select.mjs.map +1 -1
  137. package/dist/style/globals.css +63 -10
  138. package/dist/style/uncompiled/globals.css +5 -4
  139. package/dist/style/uncompiled/utitlity/shadow.css +4 -0
  140. package/dist/theming/useTheme.d.mts +3 -1
  141. package/dist/theming/useTheme.d.ts +3 -1
  142. package/dist/theming/useTheme.js +40 -17
  143. package/dist/theming/useTheme.js.map +1 -1
  144. package/dist/theming/useTheme.mjs +38 -15
  145. package/dist/theming/useTheme.mjs.map +1 -1
  146. package/package.json +1 -1
  147. package/dist/components/layout-and-navigation/BreadCrumb.js.map +0 -1
  148. package/dist/components/layout-and-navigation/BreadCrumb.mjs.map +0 -1
  149. package/dist/components/layout-and-navigation/Carousel.d.mts +0 -25
  150. package/dist/components/layout-and-navigation/Carousel.d.ts +0 -25
  151. package/dist/components/layout-and-navigation/Carousel.js +0 -643
  152. package/dist/components/layout-and-navigation/Carousel.js.map +0 -1
  153. package/dist/components/layout-and-navigation/Carousel.mjs +0 -609
  154. package/dist/components/layout-and-navigation/Carousel.mjs.map +0 -1
  155. package/dist/components/layout-and-navigation/Chip.js.map +0 -1
  156. package/dist/components/layout-and-navigation/Chip.mjs.map +0 -1
  157. package/dist/components/layout-and-navigation/DividerInserter.js.map +0 -1
  158. package/dist/components/layout-and-navigation/DividerInserter.mjs.map +0 -1
  159. package/dist/components/layout-and-navigation/Expandable.js.map +0 -1
  160. package/dist/components/layout-and-navigation/Expandable.mjs.map +0 -1
  161. package/dist/components/layout-and-navigation/FAQSection.js.map +0 -1
  162. package/dist/components/layout-and-navigation/FAQSection.mjs.map +0 -1
  163. package/dist/components/layout-and-navigation/FloatingContainer.js.map +0 -1
  164. package/dist/components/layout-and-navigation/FloatingContainer.mjs.map +0 -1
  165. package/dist/components/layout-and-navigation/ListBox.js.map +0 -1
  166. package/dist/components/layout-and-navigation/ListBox.mjs.map +0 -1
  167. package/dist/components/layout-and-navigation/MarkdownInterpreter.js.map +0 -1
  168. package/dist/components/layout-and-navigation/MarkdownInterpreter.mjs.map +0 -1
  169. package/dist/components/layout-and-navigation/Pagination.js.map +0 -1
  170. package/dist/components/layout-and-navigation/Pagination.mjs.map +0 -1
  171. package/dist/components/layout-and-navigation/ScrollArea.js.map +0 -1
  172. package/dist/components/layout-and-navigation/ScrollArea.mjs.map +0 -1
  173. package/dist/components/layout-and-navigation/StepperBar.js.map +0 -1
  174. package/dist/components/layout-and-navigation/StepperBar.mjs.map +0 -1
  175. package/dist/components/layout-and-navigation/TextImage.js.map +0 -1
  176. package/dist/components/layout-and-navigation/TextImage.mjs.map +0 -1
  177. package/dist/components/layout-and-navigation/VerticalDivider.js.map +0 -1
  178. package/dist/components/layout-and-navigation/VerticalDivider.mjs.map +0 -1
  179. /package/dist/components/{layout-and-navigation → layout}/Chip.d.mts +0 -0
  180. /package/dist/components/{layout-and-navigation → layout}/Chip.d.ts +0 -0
  181. /package/dist/components/{layout-and-navigation → layout}/DividerInserter.d.mts +0 -0
  182. /package/dist/components/{layout-and-navigation → layout}/DividerInserter.d.ts +0 -0
  183. /package/dist/components/{layout-and-navigation → layout}/Expandable.d.mts +0 -0
  184. /package/dist/components/{layout-and-navigation → layout}/Expandable.d.ts +0 -0
  185. /package/dist/components/{layout-and-navigation → layout}/FAQSection.d.mts +0 -0
  186. /package/dist/components/{layout-and-navigation → layout}/FAQSection.d.ts +0 -0
  187. /package/dist/components/{layout-and-navigation → layout}/FloatingContainer.d.mts +0 -0
  188. /package/dist/components/{layout-and-navigation → layout}/FloatingContainer.d.ts +0 -0
  189. /package/dist/components/{layout-and-navigation → layout}/ListBox.d.mts +0 -0
  190. /package/dist/components/{layout-and-navigation → layout}/ListBox.d.ts +0 -0
  191. /package/dist/components/{layout-and-navigation → layout}/MarkdownInterpreter.d.mts +0 -0
  192. /package/dist/components/{layout-and-navigation → layout}/MarkdownInterpreter.d.ts +0 -0
  193. /package/dist/components/{layout-and-navigation → layout}/ScrollArea.d.mts +0 -0
  194. /package/dist/components/{layout-and-navigation → layout}/ScrollArea.d.ts +0 -0
  195. /package/dist/components/{layout-and-navigation → layout}/TextImage.d.mts +0 -0
  196. /package/dist/components/{layout-and-navigation → layout}/TextImage.d.ts +0 -0
  197. /package/dist/components/{layout-and-navigation → layout}/VerticalDivider.d.mts +0 -0
  198. /package/dist/components/{layout-and-navigation → layout}/VerticalDivider.d.ts +0 -0
  199. /package/dist/components/{layout-and-navigation → navigation}/BreadCrumb.d.mts +0 -0
  200. /package/dist/components/{layout-and-navigation → navigation}/BreadCrumb.d.ts +0 -0
  201. /package/dist/components/{layout-and-navigation → navigation}/Pagination.d.mts +0 -0
  202. /package/dist/components/{layout-and-navigation → navigation}/Pagination.d.ts +0 -0
  203. /package/dist/components/{layout-and-navigation → navigation}/StepperBar.d.mts +0 -0
  204. /package/dist/components/{layout-and-navigation → navigation}/StepperBar.d.ts +0 -0
@@ -421,6 +421,12 @@
421
421
  .z-100 {
422
422
  z-index: 100;
423
423
  }
424
+ .z-2000 {
425
+ z-index: 2000;
426
+ }
427
+ .z-2001 {
428
+ z-index: 2001;
429
+ }
424
430
  .z-\[1\] {
425
431
  z-index: 1;
426
432
  }
@@ -539,6 +545,11 @@
539
545
  flex-direction: row;
540
546
  column-gap: calc(var(--spacing) * 4);
541
547
  }
548
+ .flex-row-6 {
549
+ display: flex;
550
+ flex-direction: row;
551
+ column-gap: calc(var(--spacing) * 6);
552
+ }
542
553
  .row {
543
554
  display: flex;
544
555
  flex-direction: row;
@@ -574,8 +585,10 @@
574
585
  flex-direction: column;
575
586
  row-gap: calc(var(--spacing) * 6);
576
587
  }
577
- .\!block {
578
- display: block !important;
588
+ .flex-col-8 {
589
+ display: flex;
590
+ flex-direction: column;
591
+ row-gap: calc(var(--spacing) * 8);
579
592
  }
580
593
  .block {
581
594
  display: block;
@@ -824,6 +837,9 @@
824
837
  .min-w-20 {
825
838
  min-width: calc(var(--spacing) * 20);
826
839
  }
840
+ .min-w-32 {
841
+ min-width: calc(var(--spacing) * 32);
842
+ }
827
843
  .min-w-40 {
828
844
  min-width: calc(var(--spacing) * 40);
829
845
  }
@@ -906,9 +922,6 @@
906
922
  .animate-pulse {
907
923
  animation: var(--animate-pulse);
908
924
  }
909
- .\!cursor-grabbing {
910
- cursor: grabbing !important;
911
- }
912
925
  .cursor-col-resize {
913
926
  cursor: col-resize;
914
927
  }
@@ -979,6 +992,9 @@
979
992
  .gap-x-2 {
980
993
  column-gap: calc(var(--spacing) * 2);
981
994
  }
995
+ .gap-x-6 {
996
+ column-gap: calc(var(--spacing) * 6);
997
+ }
982
998
  .gap-y-1 {
983
999
  row-gap: calc(var(--spacing) * 1);
984
1000
  }
@@ -1382,6 +1398,9 @@
1382
1398
  .p-4 {
1383
1399
  padding: calc(var(--spacing) * 4);
1384
1400
  }
1401
+ .p-8 {
1402
+ padding: calc(var(--spacing) * 8);
1403
+ }
1385
1404
  .px-1 {
1386
1405
  padding-inline: calc(var(--spacing) * 1);
1387
1406
  }
@@ -1975,11 +1994,14 @@
1975
1994
  -webkit-user-select: none;
1976
1995
  user-select: none;
1977
1996
  }
1978
- .animation-delay-3000 {
1979
- animation-delay: calc(3000 * 1ms);
1980
- }
1981
1997
  .shadow-hw-bottom {
1982
1998
  --shadow-bottom: 0 calc(1rem/16) calc(20rem/16) 0 var(--tw-shadow-color, rgb(0 0 0 / 10%));
1999
+ &:where([data-theme=dark], [data-theme=dark] *) {
2000
+ --shadow-bottom: 0 calc(1rem/16) calc(20rem/16) 0 var(--tw-shadow-color, rgb(0 0 0 / 20%));
2001
+ }
2002
+ }
2003
+ .animation-delay-3000 {
2004
+ animation-delay: calc(3000 * 1ms);
1983
2005
  }
1984
2006
  .shadow-r-4 {
1985
2007
  --shadow-right: calc(4 * 1px) 0 calc(4 * 1px) 0 var(--tw-shadow-color, rgb(0 0 0 / 2%));
@@ -2144,6 +2166,11 @@
2144
2166
  cursor: pointer;
2145
2167
  }
2146
2168
  }
2169
+ .group-focus-within\/slide\:border-primary {
2170
+ &:is(:where(.group\/slide):focus-within *) {
2171
+ border-color: var(--color-primary);
2172
+ }
2173
+ }
2147
2174
  .group-hover\:border-primary {
2148
2175
  &:is(:where(.group):hover *) {
2149
2176
  @media (hover: hover) {
@@ -2664,6 +2691,16 @@
2664
2691
  display: block;
2665
2692
  }
2666
2693
  }
2694
+ .desktop\:flex {
2695
+ @media (width >= 64rem) {
2696
+ display: flex;
2697
+ }
2698
+ }
2699
+ .desktop\:hidden {
2700
+ @media (width >= 64rem) {
2701
+ display: none;
2702
+ }
2703
+ }
2667
2704
  .desktop\:w-1\/2 {
2668
2705
  @media (width >= 64rem) {
2669
2706
  width: calc(1/2 * 100%);
@@ -3193,9 +3230,25 @@
3193
3230
  padding-inline: calc(var(--spacing) * 24);
3194
3231
  }
3195
3232
  }
3196
- }
3197
- @layer components {
3233
+ .link {
3234
+ border-radius: 0.25rem;
3235
+ padding: calc(var(--spacing) * 2);
3236
+ font-size: var(--text-lg);
3237
+ line-height: var(--tw-leading, var(--text-lg--line-height));
3238
+ --tw-font-weight: var(--font-weight-bold);
3239
+ font-weight: var(--font-weight-bold);
3240
+ text-decoration-thickness: 3px;
3241
+ &:hover {
3242
+ @media (hover: hover) {
3243
+ text-decoration-line: underline;
3244
+ }
3245
+ }
3246
+ &:focus {
3247
+ text-decoration-line: underline;
3248
+ }
3249
+ }
3198
3250
  * {
3251
+ list-style-type: none;
3199
3252
  border-color: var(--color-border);
3200
3253
  }
3201
3254
  html {
@@ -18,7 +18,6 @@
18
18
  --breakpoint-desktop: 64rem; /* 1024px for 16px font-size*/
19
19
  }
20
20
 
21
- /* Styles that can be overwritten by utils */
22
21
  @layer components {
23
22
  .btn-sm {
24
23
  @apply flex-row-1 items-center justify-center px-1.5 py-1 rounded-1.5 h-8 min-h-8;
@@ -79,11 +78,13 @@
79
78
  .section-padding {
80
79
  @apply px-6 tablet:px-12 desktop:px-24 py-16;
81
80
  }
82
- }
83
81
 
84
- @layer components {
82
+ .link {
83
+ @apply decoration-3 p-2 hover:underline focus:underline font-bold text-lg rounded;
84
+ }
85
+
85
86
  * {
86
- @apply border-border;
87
+ @apply border-border list-none;
87
88
  }
88
89
 
89
90
  html {
@@ -41,6 +41,10 @@
41
41
 
42
42
  @utility shadow-hw-bottom {
43
43
  --shadow-bottom: 0 calc(1rem/16) calc(20rem/16) 0 var(--tw-shadow-color, rgb(0 0 0 / 10%));
44
+
45
+ @variant dark {
46
+ --shadow-bottom: 0 calc(1rem/16) calc(20rem/16) 0 var(--tw-shadow-color, rgb(0 0 0 / 20%));
47
+ }
44
48
  }
45
49
 
46
50
  @layer utilities {
@@ -6,6 +6,7 @@ import '../localization/util.mjs';
6
6
 
7
7
  declare const themes: readonly ["light", "dark", "system"];
8
8
  type ThemeType = typeof themes[number];
9
+ type ResolvedTheme = Exclude<ThemeType, 'system'>;
9
10
  type ThemeTypeTranslation = Record<ThemeType, string> & {
10
11
  theme: TranslationPlural;
11
12
  };
@@ -15,6 +16,7 @@ declare const ThemeUtil: {
15
16
  };
16
17
  type ThemeContextType = {
17
18
  theme: ThemeType;
19
+ resolvedTheme: ResolvedTheme;
18
20
  setTheme: Dispatch<SetStateAction<ThemeType>>;
19
21
  };
20
22
  declare const ThemeContext: React.Context<ThemeContextType>;
@@ -24,4 +26,4 @@ type ThemeProviderProps = {
24
26
  declare const ThemeProvider: ({ children, initialTheme }: PropsWithChildren<ThemeProviderProps>) => react_jsx_runtime.JSX.Element;
25
27
  declare const useTheme: () => ThemeContextType;
26
28
 
27
- export { ThemeContext, ThemeProvider, type ThemeType, type ThemeTypeTranslation, ThemeUtil, useTheme };
29
+ export { type ResolvedTheme, ThemeContext, ThemeProvider, type ThemeType, type ThemeTypeTranslation, ThemeUtil, useTheme };
@@ -6,6 +6,7 @@ import '../localization/util.js';
6
6
 
7
7
  declare const themes: readonly ["light", "dark", "system"];
8
8
  type ThemeType = typeof themes[number];
9
+ type ResolvedTheme = Exclude<ThemeType, 'system'>;
9
10
  type ThemeTypeTranslation = Record<ThemeType, string> & {
10
11
  theme: TranslationPlural;
11
12
  };
@@ -15,6 +16,7 @@ declare const ThemeUtil: {
15
16
  };
16
17
  type ThemeContextType = {
17
18
  theme: ThemeType;
19
+ resolvedTheme: ResolvedTheme;
18
20
  setTheme: Dispatch<SetStateAction<ThemeType>>;
19
21
  };
20
22
  declare const ThemeContext: React.Context<ThemeContextType>;
@@ -24,4 +26,4 @@ type ThemeProviderProps = {
24
26
  declare const ThemeProvider: ({ children, initialTheme }: PropsWithChildren<ThemeProviderProps>) => react_jsx_runtime.JSX.Element;
25
27
  declare const useTheme: () => ThemeContextType;
26
28
 
27
- export { ThemeContext, ThemeProvider, type ThemeType, type ThemeTypeTranslation, ThemeUtil, useTheme };
29
+ export { type ResolvedTheme, ThemeContext, ThemeProvider, type ThemeType, type ThemeTypeTranslation, ThemeUtil, useTheme };
@@ -27,9 +27,7 @@ __export(useTheme_exports, {
27
27
  module.exports = __toCommonJS(useTheme_exports);
28
28
  var import_react2 = require("react");
29
29
  var import_react3 = require("react");
30
-
31
- // src/utils/noop.ts
32
- var noop = () => void 0;
30
+ var import_react4 = require("react");
33
31
 
34
32
  // src/hooks/useLocalStorage.ts
35
33
  var import_react = require("react");
@@ -115,30 +113,55 @@ var ThemeUtil = {
115
113
  themes,
116
114
  translation: defaultThemeTypeTranslation
117
115
  };
118
- var ThemeContext = (0, import_react3.createContext)({
119
- theme: "light",
120
- setTheme: noop
121
- });
116
+ var ThemeContext = (0, import_react4.createContext)(null);
122
117
  var ThemeProvider = ({ children, initialTheme }) => {
123
118
  const [storedTheme, setStoredTheme] = useLocalStorage("theme", initialTheme ?? "system");
124
- const [userTheme, setUserTheme] = (0, import_react3.useState)();
125
- (0, import_react3.useEffect)(() => {
119
+ const [themePreference, setThemePreference] = (0, import_react4.useState)("system");
120
+ const resolvedTheme = (0, import_react3.useMemo)(() => {
121
+ if (storedTheme && storedTheme !== "system") {
122
+ return storedTheme;
123
+ }
124
+ return themePreference === "dark" ? "dark" : "light";
125
+ }, [storedTheme, themePreference]);
126
+ (0, import_react4.useEffect)(() => {
126
127
  if (!!initialTheme && storedTheme !== initialTheme) {
127
128
  console.warn("ThemeProvider initial state changed: Prefer using useTheme's setTheme instead");
128
129
  setStoredTheme(initialTheme);
129
130
  }
130
131
  }, [initialTheme]);
131
- const usedTheme = (0, import_react2.useMemo)(() => storedTheme !== "system" ? storedTheme : userTheme, [storedTheme, userTheme]);
132
- (0, import_react3.useEffect)(() => {
133
- document.documentElement.setAttribute("data-theme", usedTheme);
134
- }, [usedTheme]);
135
- (0, import_react3.useEffect)(() => {
132
+ (0, import_react4.useEffect)(() => {
133
+ document.documentElement.setAttribute("data-theme", resolvedTheme);
134
+ }, [resolvedTheme]);
135
+ const getPreference = (0, import_react2.useCallback)(() => {
136
136
  const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
137
- setUserTheme(prefersDark ? "dark" : "light");
137
+ const prefersLight = window.matchMedia("(prefers-color-scheme: light)").matches;
138
+ setThemePreference(prefersDark ? "dark" : prefersLight ? "light" : "system");
138
139
  }, []);
139
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemeContext.Provider, { value: { theme: storedTheme, setTheme: setStoredTheme }, children });
140
+ (0, import_react4.useEffect)(() => {
141
+ getPreference();
142
+ }, [getPreference]);
143
+ (0, import_react4.useEffect)(() => {
144
+ const darkQuery = window.matchMedia("(prefers-color-scheme: dark)");
145
+ const lightQuery = window.matchMedia("(prefers-color-scheme: light)");
146
+ const noPrefQuery = window.matchMedia("(prefers-color-scheme: no-preference)");
147
+ darkQuery.addEventListener("change", getPreference);
148
+ lightQuery.addEventListener("change", getPreference);
149
+ noPrefQuery.addEventListener("change", getPreference);
150
+ return () => {
151
+ darkQuery.removeEventListener("change", getPreference);
152
+ lightQuery.removeEventListener("change", getPreference);
153
+ noPrefQuery.removeEventListener("change", getPreference);
154
+ };
155
+ }, [getPreference]);
156
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemeContext.Provider, { value: { theme: storedTheme, resolvedTheme, setTheme: setStoredTheme }, children });
157
+ };
158
+ var useTheme = () => {
159
+ const context = (0, import_react4.useContext)(ThemeContext);
160
+ if (!context) {
161
+ throw new Error("useTheme must be used within ThemeContext. Try adding a ThemeProvider around your app.");
162
+ }
163
+ return context;
140
164
  };
141
- var useTheme = () => (0, import_react3.useContext)(ThemeContext);
142
165
  // Annotate the CommonJS export names for ESM import in node:
143
166
  0 && (module.exports = {
144
167
  ThemeContext,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/theming/useTheme.tsx","../../src/utils/noop.ts","../../src/hooks/useLocalStorage.ts","../../src/utils/storage.ts","../../src/utils/resolveSetState.ts"],"sourcesContent":["import type { Dispatch, PropsWithChildren, SetStateAction } from 'react'\nimport { useMemo } from 'react'\nimport { createContext, useContext, useEffect, useState } from 'react'\nimport type { Translation, TranslationPlural } from '../localization/useTranslation'\nimport { noop } from '@/src/utils/noop'\nimport { useLocalStorage } from '../hooks/useLocalStorage'\n\nconst themes = ['light', 'dark', 'system'] as const\n\nexport type ThemeType = typeof themes[number]\n\nexport type ThemeTypeTranslation = Record<ThemeType, string> & {\n theme: TranslationPlural,\n}\n\nconst defaultThemeTypeTranslation: Translation<ThemeTypeTranslation> = {\n en: {\n dark: 'Dark',\n light: 'Light',\n system: 'System',\n theme: {\n one: 'Theme',\n other: 'Themes'\n }\n },\n de: {\n dark: 'Dunkel',\n light: 'Hell',\n system: 'System',\n theme: {\n one: 'Farbschema',\n other: 'Farbschemas'\n }\n }\n}\n\nexport const ThemeUtil = {\n themes,\n translation: defaultThemeTypeTranslation,\n}\n\ntype ThemeContextType = {\n theme: ThemeType,\n setTheme: Dispatch<SetStateAction<ThemeType>>,\n}\n\nexport const ThemeContext = createContext<ThemeContextType>({\n theme: 'light',\n setTheme: noop\n})\n\ntype ThemeProviderProps = {\n initialTheme?: ThemeType,\n}\n\nexport const ThemeProvider = ({ children, initialTheme }: PropsWithChildren<ThemeProviderProps>) => {\n const [storedTheme, setStoredTheme] = useLocalStorage<ThemeType>('theme', initialTheme ?? 'system')\n const [userTheme, setUserTheme] = useState<ThemeType>()\n\n useEffect(() => {\n if (!!initialTheme && storedTheme !== initialTheme) {\n console.warn('ThemeProvider initial state changed: Prefer using useTheme\\'s setTheme instead')\n setStoredTheme(initialTheme)\n }\n }, [initialTheme]) // eslint-disable-line react-hooks/exhaustive-deps\n\n const usedTheme = useMemo(() => storedTheme !== 'system' ? storedTheme : userTheme, [storedTheme, userTheme])\n\n useEffect(() => {\n document.documentElement.setAttribute('data-theme', usedTheme)\n }, [usedTheme])\n\n useEffect(() => {\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches\n setUserTheme(prefersDark ? 'dark' : 'light')\n }, [])\n\n return (\n <ThemeContext.Provider value={{ theme: storedTheme, setTheme: setStoredTheme }}>\n {children}\n </ThemeContext.Provider>\n )\n}\n\n\nexport const useTheme = () => useContext(ThemeContext)\n","export const noop = () => undefined\n","'use client'\n\nimport type { Dispatch, SetStateAction } from 'react'\nimport { useCallback, useState } from 'react'\nimport { LocalStorageService } from '@/src/utils/storage'\nimport { resolveSetState } from '@/src/utils/resolveSetState'\n\ntype SetValue<T> = Dispatch<SetStateAction<T>>\nexport const useLocalStorage = <T>(key: string, initValue: T): [T, SetValue<T>] => {\n const get = useCallback((): T => {\n if (typeof window === 'undefined') {\n return initValue\n }\n const storageService = new LocalStorageService()\n const value = storageService.get<T>(key)\n return value || initValue\n }, [initValue, key])\n\n const [storedValue, setStoredValue] = useState<T>(get)\n\n const setValue: SetValue<T> = useCallback(action => {\n const newValue = resolveSetState(action, storedValue)\n const storageService = new LocalStorageService()\n storageService.set(key, newValue)\n\n setStoredValue(newValue)\n }, [storedValue, setStoredValue, key])\n\n return [storedValue, setValue]\n}","class StorageService {\n // this seems to be a bug in eslint as 'paramter-properties' is a special syntax of typescript\n\n constructor(private storage: Storage) {\n }\n\n public get<T>(key: string): T | null {\n const value = this.storage.getItem(key)\n if (value === null) {\n return null\n }\n return JSON.parse(value)\n }\n\n public set<T>(key: string, value: T) {\n this.storage.setItem(key, JSON.stringify(value))\n }\n\n public delete(key: string) {\n this.storage.removeItem(key)\n }\n\n public deleteAll() {\n this.storage.clear()\n }\n}\n\nexport class LocalStorageService extends StorageService {\n constructor() {\n super(window.localStorage)\n }\n}\n\nexport class SessionStorageService extends StorageService {\n constructor() {\n super(window.sessionStorage)\n }\n}\n","import type { SetStateAction } from 'react'\n\nexport function resolveSetState<T>(action: SetStateAction<T>, prev: T): T {\n return typeof action === 'function' ? (action as (prev: T) => T)(prev) : action\n}"],"mappings":"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","names":["import_react"]}
1
+ {"version":3,"sources":["../../src/theming/useTheme.tsx","../../src/hooks/useLocalStorage.ts","../../src/utils/storage.ts","../../src/utils/resolveSetState.ts"],"sourcesContent":["import type { Dispatch, PropsWithChildren, SetStateAction } from 'react'\nimport { useCallback } from 'react'\nimport { useMemo } from 'react'\nimport { createContext, useContext, useEffect, useState } from 'react'\nimport type { Translation, TranslationPlural } from '../localization/useTranslation'\nimport { useLocalStorage } from '../hooks/useLocalStorage'\n\nconst themes = ['light', 'dark', 'system'] as const\n\nexport type ThemeType = typeof themes[number]\nexport type ResolvedTheme = Exclude<ThemeType, 'system'>\n\nexport type ThemeTypeTranslation = Record<ThemeType, string> & {\n theme: TranslationPlural,\n}\n\nconst defaultThemeTypeTranslation: Translation<ThemeTypeTranslation> = {\n en: {\n dark: 'Dark',\n light: 'Light',\n system: 'System',\n theme: {\n one: 'Theme',\n other: 'Themes'\n }\n },\n de: {\n dark: 'Dunkel',\n light: 'Hell',\n system: 'System',\n theme: {\n one: 'Farbschema',\n other: 'Farbschemas'\n }\n }\n}\n\nexport const ThemeUtil = {\n themes,\n translation: defaultThemeTypeTranslation,\n}\n\ntype ThemeContextType = {\n theme: ThemeType,\n resolvedTheme: ResolvedTheme,\n setTheme: Dispatch<SetStateAction<ThemeType>>,\n}\n\nexport const ThemeContext = createContext<ThemeContextType | null>(null)\n\ntype ThemeProviderProps = {\n initialTheme?: ThemeType,\n}\n\nexport const ThemeProvider = ({ children, initialTheme }: PropsWithChildren<ThemeProviderProps>) => {\n const [storedTheme, setStoredTheme] = useLocalStorage<ThemeType>('theme', initialTheme ?? 'system')\n const [themePreference, setThemePreference] = useState<ThemeType>('system')\n\n const resolvedTheme = useMemo(() => {\n if(storedTheme && storedTheme !== 'system') {\n return storedTheme\n }\n return themePreference === 'dark' ? 'dark' : 'light'\n }, [storedTheme, themePreference])\n\n useEffect(() => {\n if (!!initialTheme && storedTheme !== initialTheme) {\n console.warn('ThemeProvider initial state changed: Prefer using useTheme\\'s setTheme instead')\n setStoredTheme(initialTheme)\n }\n }, [initialTheme]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n document.documentElement.setAttribute('data-theme', resolvedTheme)\n }, [resolvedTheme])\n\n const getPreference = useCallback(() => {\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches\n const prefersLight = window.matchMedia('(prefers-color-scheme: light)').matches\n setThemePreference(prefersDark ? 'dark' : (prefersLight ? 'light' : 'system'))\n }, [])\n\n useEffect(() => {\n getPreference()\n }, [getPreference])\n\n useEffect(() => {\n const darkQuery = window.matchMedia('(prefers-color-scheme: dark)')\n const lightQuery = window.matchMedia('(prefers-color-scheme: light)')\n const noPrefQuery = window.matchMedia('(prefers-color-scheme: no-preference)')\n darkQuery.addEventListener('change', getPreference)\n lightQuery.addEventListener('change', getPreference)\n noPrefQuery.addEventListener('change', getPreference)\n return () => {\n darkQuery.removeEventListener('change', getPreference)\n lightQuery.removeEventListener('change', getPreference)\n noPrefQuery.removeEventListener('change', getPreference)\n }\n }, [getPreference])\n\n return (\n <ThemeContext.Provider value={{ theme: storedTheme, resolvedTheme, setTheme: setStoredTheme }}>\n {children}\n </ThemeContext.Provider>\n )\n}\n\nexport const useTheme = () => {\n const context = useContext(ThemeContext)\n if(!context) {\n throw new Error('useTheme must be used within ThemeContext. Try adding a ThemeProvider around your app.')\n }\n return context\n}\n","'use client'\n\nimport type { Dispatch, SetStateAction } from 'react'\nimport { useCallback, useState } from 'react'\nimport { LocalStorageService } from '@/src/utils/storage'\nimport { resolveSetState } from '@/src/utils/resolveSetState'\n\ntype SetValue<T> = Dispatch<SetStateAction<T>>\nexport const useLocalStorage = <T>(key: string, initValue: T): [T, SetValue<T>] => {\n const get = useCallback((): T => {\n if (typeof window === 'undefined') {\n return initValue\n }\n const storageService = new LocalStorageService()\n const value = storageService.get<T>(key)\n return value || initValue\n }, [initValue, key])\n\n const [storedValue, setStoredValue] = useState<T>(get)\n\n const setValue: SetValue<T> = useCallback(action => {\n const newValue = resolveSetState(action, storedValue)\n const storageService = new LocalStorageService()\n storageService.set(key, newValue)\n\n setStoredValue(newValue)\n }, [storedValue, setStoredValue, key])\n\n return [storedValue, setValue]\n}","class StorageService {\n // this seems to be a bug in eslint as 'paramter-properties' is a special syntax of typescript\n\n constructor(private storage: Storage) {\n }\n\n public get<T>(key: string): T | null {\n const value = this.storage.getItem(key)\n if (value === null) {\n return null\n }\n return JSON.parse(value)\n }\n\n public set<T>(key: string, value: T) {\n this.storage.setItem(key, JSON.stringify(value))\n }\n\n public delete(key: string) {\n this.storage.removeItem(key)\n }\n\n public deleteAll() {\n this.storage.clear()\n }\n}\n\nexport class LocalStorageService extends StorageService {\n constructor() {\n super(window.localStorage)\n }\n}\n\nexport class SessionStorageService extends StorageService {\n constructor() {\n super(window.sessionStorage)\n }\n}\n","import type { SetStateAction } from 'react'\n\nexport function resolveSetState<T>(action: SetStateAction<T>, prev: T): T {\n return typeof action === 'function' ? (action as (prev: T) => T)(prev) : action\n}"],"mappings":"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","names":["import_react"]}
@@ -1,10 +1,8 @@
1
1
  // src/theming/useTheme.tsx
2
+ import { useCallback as useCallback2 } from "react";
2
3
  import { useMemo } from "react";
3
4
  import { createContext, useContext, useEffect, useState as useState2 } from "react";
4
5
 
5
- // src/utils/noop.ts
6
- var noop = () => void 0;
7
-
8
6
  // src/hooks/useLocalStorage.ts
9
7
  import { useCallback, useState } from "react";
10
8
 
@@ -89,30 +87,55 @@ var ThemeUtil = {
89
87
  themes,
90
88
  translation: defaultThemeTypeTranslation
91
89
  };
92
- var ThemeContext = createContext({
93
- theme: "light",
94
- setTheme: noop
95
- });
90
+ var ThemeContext = createContext(null);
96
91
  var ThemeProvider = ({ children, initialTheme }) => {
97
92
  const [storedTheme, setStoredTheme] = useLocalStorage("theme", initialTheme ?? "system");
98
- const [userTheme, setUserTheme] = useState2();
93
+ const [themePreference, setThemePreference] = useState2("system");
94
+ const resolvedTheme = useMemo(() => {
95
+ if (storedTheme && storedTheme !== "system") {
96
+ return storedTheme;
97
+ }
98
+ return themePreference === "dark" ? "dark" : "light";
99
+ }, [storedTheme, themePreference]);
99
100
  useEffect(() => {
100
101
  if (!!initialTheme && storedTheme !== initialTheme) {
101
102
  console.warn("ThemeProvider initial state changed: Prefer using useTheme's setTheme instead");
102
103
  setStoredTheme(initialTheme);
103
104
  }
104
105
  }, [initialTheme]);
105
- const usedTheme = useMemo(() => storedTheme !== "system" ? storedTheme : userTheme, [storedTheme, userTheme]);
106
- useEffect(() => {
107
- document.documentElement.setAttribute("data-theme", usedTheme);
108
- }, [usedTheme]);
109
106
  useEffect(() => {
107
+ document.documentElement.setAttribute("data-theme", resolvedTheme);
108
+ }, [resolvedTheme]);
109
+ const getPreference = useCallback2(() => {
110
110
  const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
111
- setUserTheme(prefersDark ? "dark" : "light");
111
+ const prefersLight = window.matchMedia("(prefers-color-scheme: light)").matches;
112
+ setThemePreference(prefersDark ? "dark" : prefersLight ? "light" : "system");
112
113
  }, []);
113
- return /* @__PURE__ */ jsx(ThemeContext.Provider, { value: { theme: storedTheme, setTheme: setStoredTheme }, children });
114
+ useEffect(() => {
115
+ getPreference();
116
+ }, [getPreference]);
117
+ useEffect(() => {
118
+ const darkQuery = window.matchMedia("(prefers-color-scheme: dark)");
119
+ const lightQuery = window.matchMedia("(prefers-color-scheme: light)");
120
+ const noPrefQuery = window.matchMedia("(prefers-color-scheme: no-preference)");
121
+ darkQuery.addEventListener("change", getPreference);
122
+ lightQuery.addEventListener("change", getPreference);
123
+ noPrefQuery.addEventListener("change", getPreference);
124
+ return () => {
125
+ darkQuery.removeEventListener("change", getPreference);
126
+ lightQuery.removeEventListener("change", getPreference);
127
+ noPrefQuery.removeEventListener("change", getPreference);
128
+ };
129
+ }, [getPreference]);
130
+ return /* @__PURE__ */ jsx(ThemeContext.Provider, { value: { theme: storedTheme, resolvedTheme, setTheme: setStoredTheme }, children });
131
+ };
132
+ var useTheme = () => {
133
+ const context = useContext(ThemeContext);
134
+ if (!context) {
135
+ throw new Error("useTheme must be used within ThemeContext. Try adding a ThemeProvider around your app.");
136
+ }
137
+ return context;
114
138
  };
115
- var useTheme = () => useContext(ThemeContext);
116
139
  export {
117
140
  ThemeContext,
118
141
  ThemeProvider,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/theming/useTheme.tsx","../../src/utils/noop.ts","../../src/hooks/useLocalStorage.ts","../../src/utils/storage.ts","../../src/utils/resolveSetState.ts"],"sourcesContent":["import type { Dispatch, PropsWithChildren, SetStateAction } from 'react'\nimport { useMemo } from 'react'\nimport { createContext, useContext, useEffect, useState } from 'react'\nimport type { Translation, TranslationPlural } from '../localization/useTranslation'\nimport { noop } from '@/src/utils/noop'\nimport { useLocalStorage } from '../hooks/useLocalStorage'\n\nconst themes = ['light', 'dark', 'system'] as const\n\nexport type ThemeType = typeof themes[number]\n\nexport type ThemeTypeTranslation = Record<ThemeType, string> & {\n theme: TranslationPlural,\n}\n\nconst defaultThemeTypeTranslation: Translation<ThemeTypeTranslation> = {\n en: {\n dark: 'Dark',\n light: 'Light',\n system: 'System',\n theme: {\n one: 'Theme',\n other: 'Themes'\n }\n },\n de: {\n dark: 'Dunkel',\n light: 'Hell',\n system: 'System',\n theme: {\n one: 'Farbschema',\n other: 'Farbschemas'\n }\n }\n}\n\nexport const ThemeUtil = {\n themes,\n translation: defaultThemeTypeTranslation,\n}\n\ntype ThemeContextType = {\n theme: ThemeType,\n setTheme: Dispatch<SetStateAction<ThemeType>>,\n}\n\nexport const ThemeContext = createContext<ThemeContextType>({\n theme: 'light',\n setTheme: noop\n})\n\ntype ThemeProviderProps = {\n initialTheme?: ThemeType,\n}\n\nexport const ThemeProvider = ({ children, initialTheme }: PropsWithChildren<ThemeProviderProps>) => {\n const [storedTheme, setStoredTheme] = useLocalStorage<ThemeType>('theme', initialTheme ?? 'system')\n const [userTheme, setUserTheme] = useState<ThemeType>()\n\n useEffect(() => {\n if (!!initialTheme && storedTheme !== initialTheme) {\n console.warn('ThemeProvider initial state changed: Prefer using useTheme\\'s setTheme instead')\n setStoredTheme(initialTheme)\n }\n }, [initialTheme]) // eslint-disable-line react-hooks/exhaustive-deps\n\n const usedTheme = useMemo(() => storedTheme !== 'system' ? storedTheme : userTheme, [storedTheme, userTheme])\n\n useEffect(() => {\n document.documentElement.setAttribute('data-theme', usedTheme)\n }, [usedTheme])\n\n useEffect(() => {\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches\n setUserTheme(prefersDark ? 'dark' : 'light')\n }, [])\n\n return (\n <ThemeContext.Provider value={{ theme: storedTheme, setTheme: setStoredTheme }}>\n {children}\n </ThemeContext.Provider>\n )\n}\n\n\nexport const useTheme = () => useContext(ThemeContext)\n","export const noop = () => undefined\n","'use client'\n\nimport type { Dispatch, SetStateAction } from 'react'\nimport { useCallback, useState } from 'react'\nimport { LocalStorageService } from '@/src/utils/storage'\nimport { resolveSetState } from '@/src/utils/resolveSetState'\n\ntype SetValue<T> = Dispatch<SetStateAction<T>>\nexport const useLocalStorage = <T>(key: string, initValue: T): [T, SetValue<T>] => {\n const get = useCallback((): T => {\n if (typeof window === 'undefined') {\n return initValue\n }\n const storageService = new LocalStorageService()\n const value = storageService.get<T>(key)\n return value || initValue\n }, [initValue, key])\n\n const [storedValue, setStoredValue] = useState<T>(get)\n\n const setValue: SetValue<T> = useCallback(action => {\n const newValue = resolveSetState(action, storedValue)\n const storageService = new LocalStorageService()\n storageService.set(key, newValue)\n\n setStoredValue(newValue)\n }, [storedValue, setStoredValue, key])\n\n return [storedValue, setValue]\n}","class StorageService {\n // this seems to be a bug in eslint as 'paramter-properties' is a special syntax of typescript\n\n constructor(private storage: Storage) {\n }\n\n public get<T>(key: string): T | null {\n const value = this.storage.getItem(key)\n if (value === null) {\n return null\n }\n return JSON.parse(value)\n }\n\n public set<T>(key: string, value: T) {\n this.storage.setItem(key, JSON.stringify(value))\n }\n\n public delete(key: string) {\n this.storage.removeItem(key)\n }\n\n public deleteAll() {\n this.storage.clear()\n }\n}\n\nexport class LocalStorageService extends StorageService {\n constructor() {\n super(window.localStorage)\n }\n}\n\nexport class SessionStorageService extends StorageService {\n constructor() {\n super(window.sessionStorage)\n }\n}\n","import type { SetStateAction } from 'react'\n\nexport function resolveSetState<T>(action: SetStateAction<T>, prev: T): T {\n return typeof action === 'function' ? (action as (prev: T) => T)(prev) : action\n}"],"mappings":"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","names":["useState","useState"]}
1
+ {"version":3,"sources":["../../src/theming/useTheme.tsx","../../src/hooks/useLocalStorage.ts","../../src/utils/storage.ts","../../src/utils/resolveSetState.ts"],"sourcesContent":["import type { Dispatch, PropsWithChildren, SetStateAction } from 'react'\nimport { useCallback } from 'react'\nimport { useMemo } from 'react'\nimport { createContext, useContext, useEffect, useState } from 'react'\nimport type { Translation, TranslationPlural } from '../localization/useTranslation'\nimport { useLocalStorage } from '../hooks/useLocalStorage'\n\nconst themes = ['light', 'dark', 'system'] as const\n\nexport type ThemeType = typeof themes[number]\nexport type ResolvedTheme = Exclude<ThemeType, 'system'>\n\nexport type ThemeTypeTranslation = Record<ThemeType, string> & {\n theme: TranslationPlural,\n}\n\nconst defaultThemeTypeTranslation: Translation<ThemeTypeTranslation> = {\n en: {\n dark: 'Dark',\n light: 'Light',\n system: 'System',\n theme: {\n one: 'Theme',\n other: 'Themes'\n }\n },\n de: {\n dark: 'Dunkel',\n light: 'Hell',\n system: 'System',\n theme: {\n one: 'Farbschema',\n other: 'Farbschemas'\n }\n }\n}\n\nexport const ThemeUtil = {\n themes,\n translation: defaultThemeTypeTranslation,\n}\n\ntype ThemeContextType = {\n theme: ThemeType,\n resolvedTheme: ResolvedTheme,\n setTheme: Dispatch<SetStateAction<ThemeType>>,\n}\n\nexport const ThemeContext = createContext<ThemeContextType | null>(null)\n\ntype ThemeProviderProps = {\n initialTheme?: ThemeType,\n}\n\nexport const ThemeProvider = ({ children, initialTheme }: PropsWithChildren<ThemeProviderProps>) => {\n const [storedTheme, setStoredTheme] = useLocalStorage<ThemeType>('theme', initialTheme ?? 'system')\n const [themePreference, setThemePreference] = useState<ThemeType>('system')\n\n const resolvedTheme = useMemo(() => {\n if(storedTheme && storedTheme !== 'system') {\n return storedTheme\n }\n return themePreference === 'dark' ? 'dark' : 'light'\n }, [storedTheme, themePreference])\n\n useEffect(() => {\n if (!!initialTheme && storedTheme !== initialTheme) {\n console.warn('ThemeProvider initial state changed: Prefer using useTheme\\'s setTheme instead')\n setStoredTheme(initialTheme)\n }\n }, [initialTheme]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n document.documentElement.setAttribute('data-theme', resolvedTheme)\n }, [resolvedTheme])\n\n const getPreference = useCallback(() => {\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches\n const prefersLight = window.matchMedia('(prefers-color-scheme: light)').matches\n setThemePreference(prefersDark ? 'dark' : (prefersLight ? 'light' : 'system'))\n }, [])\n\n useEffect(() => {\n getPreference()\n }, [getPreference])\n\n useEffect(() => {\n const darkQuery = window.matchMedia('(prefers-color-scheme: dark)')\n const lightQuery = window.matchMedia('(prefers-color-scheme: light)')\n const noPrefQuery = window.matchMedia('(prefers-color-scheme: no-preference)')\n darkQuery.addEventListener('change', getPreference)\n lightQuery.addEventListener('change', getPreference)\n noPrefQuery.addEventListener('change', getPreference)\n return () => {\n darkQuery.removeEventListener('change', getPreference)\n lightQuery.removeEventListener('change', getPreference)\n noPrefQuery.removeEventListener('change', getPreference)\n }\n }, [getPreference])\n\n return (\n <ThemeContext.Provider value={{ theme: storedTheme, resolvedTheme, setTheme: setStoredTheme }}>\n {children}\n </ThemeContext.Provider>\n )\n}\n\nexport const useTheme = () => {\n const context = useContext(ThemeContext)\n if(!context) {\n throw new Error('useTheme must be used within ThemeContext. Try adding a ThemeProvider around your app.')\n }\n return context\n}\n","'use client'\n\nimport type { Dispatch, SetStateAction } from 'react'\nimport { useCallback, useState } from 'react'\nimport { LocalStorageService } from '@/src/utils/storage'\nimport { resolveSetState } from '@/src/utils/resolveSetState'\n\ntype SetValue<T> = Dispatch<SetStateAction<T>>\nexport const useLocalStorage = <T>(key: string, initValue: T): [T, SetValue<T>] => {\n const get = useCallback((): T => {\n if (typeof window === 'undefined') {\n return initValue\n }\n const storageService = new LocalStorageService()\n const value = storageService.get<T>(key)\n return value || initValue\n }, [initValue, key])\n\n const [storedValue, setStoredValue] = useState<T>(get)\n\n const setValue: SetValue<T> = useCallback(action => {\n const newValue = resolveSetState(action, storedValue)\n const storageService = new LocalStorageService()\n storageService.set(key, newValue)\n\n setStoredValue(newValue)\n }, [storedValue, setStoredValue, key])\n\n return [storedValue, setValue]\n}","class StorageService {\n // this seems to be a bug in eslint as 'paramter-properties' is a special syntax of typescript\n\n constructor(private storage: Storage) {\n }\n\n public get<T>(key: string): T | null {\n const value = this.storage.getItem(key)\n if (value === null) {\n return null\n }\n return JSON.parse(value)\n }\n\n public set<T>(key: string, value: T) {\n this.storage.setItem(key, JSON.stringify(value))\n }\n\n public delete(key: string) {\n this.storage.removeItem(key)\n }\n\n public deleteAll() {\n this.storage.clear()\n }\n}\n\nexport class LocalStorageService extends StorageService {\n constructor() {\n super(window.localStorage)\n }\n}\n\nexport class SessionStorageService extends StorageService {\n constructor() {\n super(window.sessionStorage)\n }\n}\n","import type { SetStateAction } from 'react'\n\nexport function resolveSetState<T>(action: SetStateAction<T>, prev: T): T {\n return typeof action === 'function' ? (action as (prev: T) => T)(prev) : action\n}"],"mappings":"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","names":["useCallback","useState","useState","useCallback"]}
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "url": "git+https://github.com/helpwave/hightide.git"
8
8
  },
9
9
  "license": "MPL-2.0",
10
- "version": "0.1.26",
10
+ "version": "0.1.27",
11
11
  "files": [
12
12
  "dist"
13
13
  ],