@adaptive-ds/solid-ui 0.11.0 → 0.13.0

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 (193) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +219 -0
  3. package/dist/demo_pages/LinkBlock.js +1 -1
  4. package/dist/demo_pages/generateDemoRoutes.js +3 -3
  5. package/dist/generate_demo_list/generateDemoList.js +1 -1
  6. package/dist/generate_demo_list/parts/formatGeneratedCodeFile.d.ts +1 -1
  7. package/dist/generate_demo_list/parts/formatGeneratedCodeFile.js +1 -1
  8. package/dist/input/check/CheckBoolean.js +1 -1
  9. package/dist/input/check/CheckBooleanSingle.js +1 -1
  10. package/dist/input/check/CheckMultiple.js +1 -1
  11. package/dist/input/check/CheckSingle.js +1 -1
  12. package/dist/input/check/Checkbox.js +1 -1
  13. package/dist/input/fieldset/Fieldset.js +1 -1
  14. package/dist/input/input/Input.js +1 -1
  15. package/dist/input/input/InputDatalist.js +2 -2
  16. package/dist/input/label/Label.js +1 -1
  17. package/dist/input/label/LabelAsterix.js +1 -1
  18. package/dist/input/label/LabelPseudo.js +1 -1
  19. package/dist/input/label/LabelWithInfo.js +1 -1
  20. package/dist/input/label/LabelWithSubtitle.js +1 -1
  21. package/dist/input/number/NumberInputS.js +2 -2
  22. package/dist/input/select/SelectMultiple.js +1 -1
  23. package/dist/input/select/SelectSingleNative.js +1 -1
  24. package/dist/input/switch/SwitchSingle.js +1 -1
  25. package/dist/input/textarea/Textarea.js +1 -1
  26. package/dist/interactive/button/Button.js +1 -1
  27. package/dist/interactive/button/ButtonIcon1.js +1 -1
  28. package/dist/interactive/button/ButtonIconOnly.js +1 -1
  29. package/dist/interactive/button/buttonCva.d.ts +13 -9
  30. package/dist/interactive/button/buttonCva.d.ts.map +1 -1
  31. package/dist/interactive/button/buttonCva.js +75 -43
  32. package/dist/interactive/button/buttonCva.js.map +1 -1
  33. package/dist/interactive/button/buttonIconCva.d.ts +1 -1
  34. package/dist/interactive/button/buttonIconCva.d.ts.map +1 -1
  35. package/dist/interactive/button/buttonIconCva.js +14 -15
  36. package/dist/interactive/button/buttonIconCva.js.map +1 -1
  37. package/dist/interactive/button/classesButtonDisabled.d.ts +2 -0
  38. package/dist/interactive/button/classesButtonDisabled.d.ts.map +1 -0
  39. package/dist/interactive/button/classesButtonDisabled.js +5 -0
  40. package/dist/interactive/button/classesButtonDisabled.js.map +1 -0
  41. package/dist/interactive/details/Details.js +1 -1
  42. package/dist/interactive/dialog/CorvuDialog.js +1 -1
  43. package/dist/interactive/dialog/CorvuDialogIcon.js +1 -1
  44. package/dist/interactive/layout/SidebarLayout.js +1 -1
  45. package/dist/interactive/link/LinkButton.js +1 -1
  46. package/dist/interactive/link/LinkButtonIconOnly.js +1 -1
  47. package/dist/interactive/link/LinkText.js +1 -1
  48. package/dist/interactive/list/BulletLinks.js +1 -1
  49. package/dist/interactive/tabs/TabsTop.js +1 -1
  50. package/dist/interactive/theme/ThemeButton.d.ts +1 -1
  51. package/dist/interactive/theme/ThemeButton.d.ts.map +1 -1
  52. package/dist/interactive/theme/ThemeButton.js +4 -4
  53. package/dist/interactive/theme/ThemeButton.js.map +1 -1
  54. package/dist/interactive/theme/themeSignal.d.ts.map +1 -1
  55. package/dist/interactive/theme/themeSignal.js +3 -1
  56. package/dist/interactive/theme/themeSignal.js.map +1 -1
  57. package/dist/interactive/toast/Toast.js +1 -1
  58. package/dist/interactive/toast/Toaster.js +1 -1
  59. package/dist/interactive/toggle/ToggleButtonIconOnly.js +1 -1
  60. package/dist/node_modules/@adaptive-ds/utils/dist/bun/runCmdAsync.js +45 -0
  61. package/dist/node_modules/@adaptive-ds/utils/dist/bun/runCmdAsync.js.map +1 -0
  62. package/dist/node_modules/@adaptive-ds/utils/dist/int/safeParseInt.js +10 -0
  63. package/dist/node_modules/@adaptive-ds/utils/dist/int/safeParseInt.js.map +1 -0
  64. package/dist/node_modules/@adaptive-ds/utils/dist/json/jsonStringifyPretty.js +7 -0
  65. package/dist/node_modules/@adaptive-ds/utils/dist/json/jsonStringifyPretty.js.map +1 -0
  66. package/dist/node_modules/@adaptive-ds/utils/dist/obj/objectEntries.js +5 -0
  67. package/dist/node_modules/@adaptive-ds/utils/dist/obj/objectEntries.js.map +1 -0
  68. package/dist/node_modules/@adaptive-ds/utils/dist/obj/objectKeys.js +5 -0
  69. package/dist/node_modules/@adaptive-ds/utils/dist/obj/objectKeys.js.map +1 -0
  70. package/dist/node_modules/@adaptive-ds/utils/dist/ran/generateId12.js +9 -0
  71. package/dist/node_modules/@adaptive-ds/utils/dist/ran/generateId12.js.map +1 -0
  72. package/dist/node_modules/@adaptive-ds/utils/dist/ran/generateReadableId.js +29 -0
  73. package/dist/node_modules/@adaptive-ds/utils/dist/ran/generateReadableId.js.map +1 -0
  74. package/dist/node_modules/@adaptive-ds/utils/dist/ran/urlAlphabet32.js +5 -0
  75. package/dist/node_modules/@adaptive-ds/utils/dist/ran/urlAlphabet32.js.map +1 -0
  76. package/dist/node_modules/@corvu/dialog/dist/index.js +537 -0
  77. package/dist/node_modules/@corvu/dialog/dist/index.js.map +1 -0
  78. package/dist/node_modules/@corvu/popover/dist/index.js +267 -0
  79. package/dist/node_modules/@corvu/popover/dist/index.js.map +1 -0
  80. package/dist/node_modules/@corvu/popover/node_modules/@corvu/utils/dist/chunk/74BWZKBI.js +7 -0
  81. package/dist/node_modules/@corvu/popover/node_modules/@corvu/utils/dist/chunk/74BWZKBI.js.map +1 -0
  82. package/dist/node_modules/@corvu/popover/node_modules/@corvu/utils/dist/chunk/NVYXOAAC.js +22 -0
  83. package/dist/node_modules/@corvu/popover/node_modules/@corvu/utils/dist/chunk/NVYXOAAC.js.map +1 -0
  84. package/dist/node_modules/@corvu/popover/node_modules/@corvu/utils/dist/chunk/U42ECMND.js +16 -0
  85. package/dist/node_modules/@corvu/popover/node_modules/@corvu/utils/dist/chunk/U42ECMND.js.map +1 -0
  86. package/dist/node_modules/@corvu/popover/node_modules/@corvu/utils/dist/chunk/UKBPAEF5.js +23 -0
  87. package/dist/node_modules/@corvu/popover/node_modules/@corvu/utils/dist/chunk/UKBPAEF5.js.map +1 -0
  88. package/dist/node_modules/@corvu/popover/node_modules/@corvu/utils/dist/chunk/WR7IK7QK.js +41 -0
  89. package/dist/node_modules/@corvu/popover/node_modules/@corvu/utils/dist/chunk/WR7IK7QK.js.map +1 -0
  90. package/dist/node_modules/@corvu/popover/node_modules/@corvu/utils/dist/components/FloatingArrow.js +72 -0
  91. package/dist/node_modules/@corvu/popover/node_modules/@corvu/utils/dist/components/FloatingArrow.js.map +1 -0
  92. package/dist/node_modules/@corvu/popover/node_modules/@corvu/utils/dist/create/floating.js +132 -0
  93. package/dist/node_modules/@corvu/popover/node_modules/@corvu/utils/dist/create/floating.js.map +1 -0
  94. package/dist/node_modules/@corvu/popover/node_modules/@corvu/utils/dist/create/keyedContext.js +20 -0
  95. package/dist/node_modules/@corvu/popover/node_modules/@corvu/utils/dist/create/keyedContext.js.map +1 -0
  96. package/dist/node_modules/@corvu/popover/node_modules/@corvu/utils/dist/create/once.js +18 -0
  97. package/dist/node_modules/@corvu/popover/node_modules/@corvu/utils/dist/create/once.js.map +1 -0
  98. package/dist/node_modules/@corvu/utils/dist/chunk/74BWZKBI.js +18 -0
  99. package/dist/node_modules/@corvu/utils/dist/chunk/74BWZKBI.js.map +1 -0
  100. package/dist/node_modules/@corvu/utils/dist/chunk/GZJAOTUE.js +45 -0
  101. package/dist/node_modules/@corvu/utils/dist/chunk/GZJAOTUE.js.map +1 -0
  102. package/dist/node_modules/@corvu/utils/dist/chunk/U42ECMND.js +20 -0
  103. package/dist/node_modules/@corvu/utils/dist/chunk/U42ECMND.js.map +1 -0
  104. package/dist/node_modules/@corvu/utils/dist/chunk/UKBPAEF5.js +52 -0
  105. package/dist/node_modules/@corvu/utils/dist/chunk/UKBPAEF5.js.map +1 -0
  106. package/dist/node_modules/@corvu/utils/dist/chunk/XJFCWSNS.js +11 -0
  107. package/dist/node_modules/@corvu/utils/dist/chunk/XJFCWSNS.js.map +1 -0
  108. package/dist/node_modules/@corvu/utils/dist/create/controllableSignal.js +29 -0
  109. package/dist/node_modules/@corvu/utils/dist/create/controllableSignal.js.map +1 -0
  110. package/dist/node_modules/@corvu/utils/dist/create/keyedContext.js +20 -0
  111. package/dist/node_modules/@corvu/utils/dist/create/keyedContext.js.map +1 -0
  112. package/dist/node_modules/@corvu/utils/dist/create/once.js +18 -0
  113. package/dist/node_modules/@corvu/utils/dist/create/once.js.map +1 -0
  114. package/dist/node_modules/@corvu/utils/dist/create/register.js +22 -0
  115. package/dist/node_modules/@corvu/utils/dist/create/register.js.map +1 -0
  116. package/dist/node_modules/@corvu/utils/dist/create/style.js +51 -0
  117. package/dist/node_modules/@corvu/utils/dist/create/style.js.map +1 -0
  118. package/dist/node_modules/@corvu/utils/dist/scroll/index.js +39 -0
  119. package/dist/node_modules/@corvu/utils/dist/scroll/index.js.map +1 -0
  120. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js +879 -0
  121. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js.map +1 -0
  122. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +632 -0
  123. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js.map +1 -0
  124. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +177 -0
  125. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js.map +1 -0
  126. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +156 -0
  127. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js.map +1 -0
  128. package/dist/node_modules/image-size/dist/index.js +942 -0
  129. package/dist/node_modules/image-size/dist/index.js.map +1 -0
  130. package/dist/node_modules/solid-dismissible/dist/index.js +253 -0
  131. package/dist/node_modules/solid-dismissible/dist/index.js.map +1 -0
  132. package/dist/node_modules/solid-focus-trap/dist/index.js +164 -0
  133. package/dist/node_modules/solid-focus-trap/dist/index.js.map +1 -0
  134. package/dist/node_modules/solid-presence/dist/index.js +73 -0
  135. package/dist/node_modules/solid-presence/dist/index.js.map +1 -0
  136. package/dist/node_modules/solid-prevent-scroll/dist/index.js +160 -0
  137. package/dist/node_modules/solid-prevent-scroll/dist/index.js.map +1 -0
  138. package/dist/static/badge/Badge.js +1 -1
  139. package/dist/static/container/CardWrapper.js +1 -1
  140. package/dist/static/dev/TailwindIndicator.js +1 -1
  141. package/dist/static/grid/FeatureGridSection.js +1 -1
  142. package/dist/static/icon/Icon.js +1 -1
  143. package/dist/static/icon/IconGoogle.js +1 -1
  144. package/dist/static/icons/iconApple.d.ts +2 -0
  145. package/dist/static/icons/iconApple.d.ts.map +1 -0
  146. package/dist/static/icons/iconApple.js +5 -0
  147. package/dist/static/icons/iconApple.js.map +1 -0
  148. package/dist/static/icons/iconGooglePlay.d.ts +2 -0
  149. package/dist/static/icons/iconGooglePlay.d.ts.map +1 -0
  150. package/dist/static/icons/iconGooglePlay.js +5 -0
  151. package/dist/static/icons/iconGooglePlay.js.map +1 -0
  152. package/dist/static/img/Img.js +1 -1
  153. package/dist/static/lists/BlackBulletPoint.js +1 -1
  154. package/dist/static/lists/BlackBulletPoints.d.ts +8 -0
  155. package/dist/static/lists/BlackBulletPoints.d.ts.map +1 -0
  156. package/dist/static/lists/BlackBulletPoints.js +35 -0
  157. package/dist/static/lists/BlackBulletPoints.js.map +1 -0
  158. package/dist/static/lists/BlueBulletPoint.js +1 -1
  159. package/dist/static/lists/BlueBulletPoints.d.ts +3 -0
  160. package/dist/static/lists/BlueBulletPoints.d.ts.map +1 -0
  161. package/dist/static/lists/BlueBulletPoints.js +11 -0
  162. package/dist/static/lists/BlueBulletPoints.js.map +1 -0
  163. package/dist/static/lists/CheckPoints.d.ts +8 -0
  164. package/dist/static/lists/CheckPoints.d.ts.map +1 -0
  165. package/dist/static/lists/CheckPoints.js +35 -0
  166. package/dist/static/lists/CheckPoints.js.map +1 -0
  167. package/dist/static/lists/TextOrLink.d.ts +6 -0
  168. package/dist/static/lists/TextOrLink.d.ts.map +1 -0
  169. package/dist/static/lists/TextOrLink.js +35 -0
  170. package/dist/static/lists/TextOrLink.js.map +1 -0
  171. package/dist/static/loaders/LoaderShuffle4Dots.js +1 -1
  172. package/dist/static/loaders/LoaderShuffle9Squares.js +1 -1
  173. package/dist/static/loaders/LoaderSpin4Square.js +1 -1
  174. package/dist/static/loaders/LoadingPage.js +1 -1
  175. package/dist/static/logo/LogoImageText.js +1 -1
  176. package/dist/static/page/PageWrapper.js +1 -1
  177. package/dist/static/pages/ErrorPage.js +1 -1
  178. package/dist/static/pages/SuccessPage.js +1 -1
  179. package/dist/static/separator/SeparatorOr.js +1 -1
  180. package/dist/static/separator/SeparatorWithText.js +1 -1
  181. package/dist/static/styles/stylesBgDottedSparse.d.ts +6 -0
  182. package/dist/static/styles/stylesBgDottedSparse.d.ts.map +1 -0
  183. package/dist/static/styles/stylesBgDottedSparse.js +9 -0
  184. package/dist/static/styles/stylesBgDottedSparse.js.map +1 -0
  185. package/dist/static/timeline/Timeline.js +1 -1
  186. package/dist/table/Table.js +1 -1
  187. package/dist/table/table1/Table1D.js +1 -1
  188. package/dist/table/table1/Table1M.js +1 -1
  189. package/dist/table/table1/Table1MEntry.js +1 -1
  190. package/dist/table/table2/Table2D.js +1 -1
  191. package/dist/table/table2/Table2M.js +1 -1
  192. package/dist/table/table2/Table2MEntry.js +1 -1
  193. package/package.json +16 -18
@@ -1,9 +1,9 @@
1
- import { classesDisabledDirectly } from "../../classes/classesDisabledDirectly.js";
2
- import { classesDisabledModifier } from "../../classes/classesDisabledModifier.js";
3
1
  import { classesButtonClickAnimation } from "./classesButtonClickAnimation.js";
2
+ import { classesButtonDisabled } from "./classesButtonDisabled.js";
4
3
  import { classArr } from "../../utils/classArr.js";
5
4
  import { classMerge } from "../../utils/classMerge.js";
6
5
  const buttonVariant = {
6
+ none: "none",
7
7
  // transparent bg
8
8
  outline: "outline",
9
9
  ghost: "ghost",
@@ -11,15 +11,18 @@ const buttonVariant = {
11
11
  // filled black/white/gray
12
12
  filled: "filled",
13
13
  subtle: "subtle",
14
- default: "default",
14
+ contrast: "contrast",
15
15
  // filled colors
16
- primary: "primary",
17
- destructive: "destructive",
18
- warning: "warning",
19
- success: "success",
20
- info: "info",
16
+ filledYellow: "filledYellow",
17
+ filledAmber: "filledAmber",
18
+ filledOrange: "filledOrange",
19
+ filledRed: "filledRed",
20
+ filledGreen: "filledGreen",
21
+ filledSky: "filledSky",
22
+ filledBlue: "filledBlue",
23
+ filledIndigo: "filledIndigo",
21
24
  // outlined colors
22
- error: "error"
25
+ outlineRed: "outlineRed"
23
26
  };
24
27
  const buttonSize = {
25
28
  none: "none",
@@ -42,20 +45,20 @@ const baseClasses = classArr(
42
45
  "transition-colors",
43
46
  // animation
44
47
  "group",
45
- "cursor-pointer",
46
- classesDisabledModifier
48
+ "cursor-pointer"
47
49
  );
48
50
  const variantClasses = {
49
51
  //
50
52
  // transparent bg
51
53
  //
54
+ none: "",
52
55
  outline: classArr(
53
56
  "bg-transparent dark:bg-transparent",
54
57
  "dark:text-slate-100",
55
58
  // text
56
- "hover:bg-slate-100 dark:hover:bg-slate-900",
59
+ "hover:bg-slate-100",
57
60
  // bg hover
58
- "border border-slate-200 dark:border-stone-500"
61
+ "border border-slate-200 dark:border-slate-700 dark:hover:bg-slate-900"
59
62
  // border
60
63
  ),
61
64
  ghost: classArr(
@@ -65,7 +68,7 @@ const variantClasses = {
65
68
  // bg
66
69
  "data-[state=open]:bg-transparent dark:data-[state=open]:bg-transparent",
67
70
  // bg data
68
- "hover:bg-slate-100 dark:hover:bg-neutral-600"
71
+ "hover:bg-slate-100 dark:hover:bg-slate-800"
69
72
  // bg hover
70
73
  ),
71
74
  link: classArr(
@@ -84,9 +87,9 @@ const variantClasses = {
84
87
  filled: classArr(
85
88
  "dark:text-slate-100",
86
89
  // text
87
- "bg-white dark:bg-slate-700",
90
+ "bg-white dark:bg-black",
88
91
  // bg
89
- "hover:bg-slate-50 dark:hover:bg-slate-600"
92
+ "hover:bg-slate-50 dark:hover:bg-slate-900"
90
93
  // bg hover
91
94
  ),
92
95
  subtle: classArr(
@@ -97,7 +100,7 @@ const variantClasses = {
97
100
  "hover:bg-slate-200 dark:hover:bg-slate-600"
98
101
  // bg hover
99
102
  ),
100
- default: classArr(
103
+ contrast: classArr(
101
104
  "text-white dark:text-slate-900 dark:hover:text-slate-900",
102
105
  // text
103
106
  "bg-slate-900 dark:bg-slate-50",
@@ -108,37 +111,47 @@ const variantClasses = {
108
111
  //
109
112
  // filled colors
110
113
  //
111
- primary: classArr(
112
- "text-white dark:text-indigo-100 ",
114
+ filledYellow: classArr(
115
+ "text-white",
113
116
  // text
114
- "bg-indigo-500 dark:bg-indigo-800 ",
117
+ "bg-yellow-500 dark:bg-yellow-800 ",
115
118
  // bg
116
- "hover:bg-indigo-700 dark:hover:bg-indigo-600",
119
+ "hover:bg-yellow-700 dark:hover:bg-yellow-600",
117
120
  // bg hover
118
- "focus:ring-indigo-400 dark:focus:ring-indigo-400"
121
+ "focus:ring-yellow-400 dark:focus:ring-yellow-400"
119
122
  // focus
120
123
  ),
121
- destructive: classArr(
124
+ filledAmber: classArr(
122
125
  "text-white",
123
126
  // text
124
- "bg-red-500 dark:bg-red-700",
127
+ "bg-amber-500 dark:bg-amber-800 ",
125
128
  // bg
126
- "hover:bg-red-600 dark:hover:bg-red-600",
129
+ "hover:bg-amber-700 dark:hover:bg-amber-600",
127
130
  // bg hover
128
- "focus:ring-red-400 dark:focus:ring-red-400"
131
+ "focus:ring-amber-400 dark:focus:ring-amber-400"
129
132
  // focus
130
133
  ),
131
- warning: classArr(
132
- "text-white dark:text-indigo-100 ",
134
+ filledOrange: classArr(
135
+ "text-white",
133
136
  // text
134
- "bg-yellow-500 dark:bg-yellow-700 ",
137
+ "bg-orange-500 dark:bg-orange-800 ",
135
138
  // bg
136
- "hover:bg-yellow-600 dark:hover:bg-yellow-600",
139
+ "hover:bg-orange-700 dark:hover:bg-orange-600",
137
140
  // bg hover
138
- "focus:ring-yellow-400 dark:focus:ring-yellow-400"
141
+ "focus:ring-orange-400 dark:focus:ring-orange-400"
139
142
  // focus
140
143
  ),
141
- success: classArr(
144
+ filledRed: classArr(
145
+ "text-white",
146
+ // text
147
+ "bg-red-500 dark:bg-red-700",
148
+ // bg
149
+ "hover:bg-red-600 dark:hover:bg-red-600",
150
+ // bg hover
151
+ "focus:ring-red-400 dark:focus:ring-red-400"
152
+ // focus
153
+ ),
154
+ filledGreen: classArr(
142
155
  "text-white",
143
156
  // text
144
157
  "bg-green-500 hover:bg-green-700 dark:hover:bg-green-700",
@@ -146,7 +159,7 @@ const variantClasses = {
146
159
  "focus:ring-green-400 dark:focus:ring-green-400"
147
160
  // focus
148
161
  ),
149
- info: classArr(
162
+ filledSky: classArr(
150
163
  "text-white",
151
164
  // text
152
165
  "bg-sky-500 hover:bg-sky-700 dark:hover:bg-sky-700",
@@ -154,11 +167,31 @@ const variantClasses = {
154
167
  "focus:ring-sky-400 dark:focus:ring-sky-400"
155
168
  // focus
156
169
  ),
170
+ filledIndigo: classArr(
171
+ "text-white",
172
+ // text
173
+ "bg-indigo-500 dark:bg-indigo-800 ",
174
+ // bg
175
+ "hover:bg-indigo-700 dark:hover:bg-indigo-600",
176
+ // bg hover
177
+ "focus:ring-indigo-400 dark:focus:ring-indigo-400"
178
+ // focus
179
+ ),
180
+ filledBlue: classArr(
181
+ "text-white",
182
+ // text
183
+ "bg-blue-500 dark:bg-blue-800 ",
184
+ // bg
185
+ "hover:bg-blue-700 dark:hover:bg-blue-600",
186
+ // bg hover
187
+ "focus:ring-blue-400 dark:focus:ring-blue-400"
188
+ // focus
189
+ ),
157
190
  //
158
191
  // outline toast colors
159
192
  //
160
- error: classArr(
161
- "text-destructive dark:text-red-500",
193
+ outlineRed: classArr(
194
+ "text-red-500 dark:text-red-500",
162
195
  // text
163
196
  "border border-red-200 dark:border-red-700",
164
197
  // border
@@ -177,30 +210,29 @@ const sizeClasses = {
177
210
  default: "py-2 px-3",
178
211
  lg: "px-8 py-4 text-lg"
179
212
  };
180
- const defaultVariant = buttonVariant.default;
181
213
  const defaultSize = buttonSize.default;
182
- function buttonCva1(variant = defaultVariant, ...customClasses) {
214
+ function buttonCva1(variant, ...customClasses) {
183
215
  return buttonCva2(variant, null, ...customClasses);
184
216
  }
185
- function buttonCva2(variant = defaultVariant, size = defaultSize, ...customClasses) {
186
- const v = variant ?? defaultVariant;
217
+ function buttonCva2(variant = buttonVariant.ghost, size = defaultSize, ...customClasses) {
218
+ const v = variant;
187
219
  const s = size ?? defaultSize;
188
220
  return classMerge(baseClasses, variantClasses[v], sizeClasses[s], combinedClasses(v, s), customClasses);
189
221
  }
190
222
  function combinedClasses(variant, size) {
191
- const variantGroup1 = variant === buttonVariant.outline || variant === buttonVariant.warning || variant === buttonVariant.error;
223
+ const variantGroup1 = variant === buttonVariant.outline || variant === buttonVariant.filledYellow || variant === buttonVariant.outlineRed;
192
224
  if (variantGroup1 && size === buttonSize.lg) {
193
225
  return "border-2";
194
226
  }
195
227
  return null;
196
228
  }
197
- function buttonCvaIconOnly(variant, isLoading, isDisabled, ...customClasses) {
229
+ function buttonCvaIconOnly(variant = buttonVariant.ghost, isLoading, isDisabled, ...customClasses) {
198
230
  const classes = buttonCva2(
199
231
  variant,
200
232
  buttonSize.none,
201
233
  classesButtonClickAnimation,
202
- "rounded-full p-2",
203
- (isDisabled || isLoading) && classesDisabledDirectly,
234
+ "rounded-full p-2.5",
235
+ (isDisabled || isLoading) && classesButtonDisabled,
204
236
  ...customClasses
205
237
  );
206
238
  return classes;
@@ -1 +1 @@
1
- {"version":3,"file":"buttonCva.js","sources":["../../../lib/interactive/button/buttonCva.ts"],"sourcesContent":["import { classesDisabledDirectly } from \"~ui/classes/classesDisabledDirectly\"\nimport { classesDisabledModifier } from \"~ui/classes/classesDisabledModifier\"\nimport { classesButtonClickAnimation } from \"~ui/interactive/button/classesButtonClickAnimation\"\nimport { classArr } from \"~ui/utils/classArr\"\nimport { classMerge } from \"~ui/utils/classMerge\"\n\nexport type ButtonVariant = keyof typeof buttonVariant\nexport const buttonVariant = {\n // transparent bg\n outline: \"outline\",\n ghost: \"ghost\",\n link: \"link\",\n // filled black/white/gray\n filled: \"filled\",\n subtle: \"subtle\",\n default: \"default\",\n // filled colors\n primary: \"primary\",\n destructive: \"destructive\",\n warning: \"warning\",\n success: \"success\",\n info: \"info\",\n // outlined colors\n error: \"error\",\n} as const\n\nexport type ButtonSize = keyof typeof buttonSize\nexport const buttonSize = {\n none: \"none\",\n minimal: \"minimal\",\n sm: \"sm\",\n default: \"default\",\n lg: \"lg\",\n} as const\n\nexport type ButtonCvaProps = {\n variant?: ButtonVariant\n size?: ButtonSize\n}\n\nconst baseClasses = classArr(\n \"inline-flex\", // layout\n \"font-medium\", // text\n \"items-center justify-center\", // layout children\n \"rounded-md ring-offset-background\", // rounded, rings\n \"focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\", // focus\n \"transition-colors\", // animation\n \"group\",\n \"cursor-pointer\",\n classesDisabledModifier,\n)\n\nconst variantClasses = {\n //\n // transparent bg\n //\n outline: classArr(\n \"bg-transparent dark:bg-transparent\",\n \"dark:text-slate-100\", // text\n \"hover:bg-slate-100 dark:hover:bg-slate-900\", // bg hover\n \"border border-slate-200 dark:border-stone-500\", // border\n ),\n ghost: classArr(\n \"dark:text-slate-100 dark:hover:text-slate-100\", // text\n \"bg-transparent dark:bg-transparent\", // bg\n \"data-[state=open]:bg-transparent dark:data-[state=open]:bg-transparent\", // bg data\n \"hover:bg-slate-100 dark:hover:bg-neutral-600\", // bg hover\n ),\n link: classArr(\n \"text-slate-900 dark:text-slate-100\", // text\n \"underline-offset-4 hover:underline \", // underline\n \"bg-transparent dark:bg-transparent\", // bg\n \"hover:bg-transparent dark:hover:bg-transparent\", // bg hover\n ),\n //\n // filled grayscale\n //\n filled: classArr(\n \"dark:text-slate-100\", // text\n \"bg-white dark:bg-slate-700\", // bg\n \"hover:bg-slate-50 dark:hover:bg-slate-600\", // bg hover\n ),\n subtle: classArr(\n \"text-slate-900 dark:text-slate-100\", // text\n \"bg-slate-100 dark:bg-slate-700\", // bg\n \"hover:bg-slate-200 dark:hover:bg-slate-600\", // bg hover\n ),\n default: classArr(\n \"text-white dark:text-slate-900 dark:hover:text-slate-900\", // text\n \"bg-slate-900 dark:bg-slate-50\", // bg\n \"hover:bg-slate-700 dark:hover:bg-slate-300\", // bg hover\n ),\n //\n // filled colors\n //\n primary: classArr(\n \"text-white dark:text-indigo-100 \", // text\n \"bg-indigo-500 dark:bg-indigo-800 \", // bg\n \"hover:bg-indigo-700 dark:hover:bg-indigo-600\", // bg hover\n \"focus:ring-indigo-400 dark:focus:ring-indigo-400\", // focus\n ),\n destructive: classArr(\n \"text-white\", // text\n \"bg-red-500 dark:bg-red-700\", // bg\n \"hover:bg-red-600 dark:hover:bg-red-600\", // bg hover\n \"focus:ring-red-400 dark:focus:ring-red-400\", // focus\n ),\n warning: classArr(\n \"text-white dark:text-indigo-100 \", // text\n \"bg-yellow-500 dark:bg-yellow-700 \", // bg\n \"hover:bg-yellow-600 dark:hover:bg-yellow-600\", // bg hover\n \"focus:ring-yellow-400 dark:focus:ring-yellow-400\", // focus\n ),\n success: classArr(\n \"text-white\", // text\n \"bg-green-500 hover:bg-green-700 dark:hover:bg-green-700\", // bg\n \"focus:ring-green-400 dark:focus:ring-green-400\", // focus\n ),\n info: classArr(\n \"text-white\", // text\n \"bg-sky-500 hover:bg-sky-700 dark:hover:bg-sky-700\", // bg\n \"focus:ring-sky-400 dark:focus:ring-sky-400\", // focus\n ),\n //\n // outline toast colors\n //\n error: classArr(\n \"text-destructive dark:text-red-500\", // text\n \"border border-red-200 dark:border-red-700\", // border\n \"bg-transparent\", // bg\n \"hover:bg-red-100 dark:hover:bg-red-950\", // bg hover\n \"focus:ring-red-400 dark:focus:ring-red-400\", // focus\n ),\n} as const satisfies Record<ButtonVariant, string>\n\nconst sizeClasses = {\n none: \"\",\n minimal: \"rounded-none\",\n sm: \"px-3\",\n default: \"py-2 px-3\",\n lg: \"px-8 py-4 text-lg\",\n} as const satisfies Record<ButtonSize, string>\n\nconst defaultVariant = buttonVariant.default\nconst defaultSize = buttonSize.default\n\nexport function buttonCva1(\n variant: ButtonVariant | null = defaultVariant,\n ...customClasses: (string | boolean | undefined | null | 0)[]\n) {\n return buttonCva2(variant, null, ...customClasses)\n}\n\nexport function buttonCva2(\n variant: ButtonVariant | null = defaultVariant,\n size: ButtonSize | null = defaultSize,\n ...customClasses: (string | boolean | undefined | null | 0)[]\n) {\n const v = variant ?? defaultVariant\n const s = size ?? defaultSize\n return classMerge(baseClasses, variantClasses[v], sizeClasses[s], combinedClasses(v, s), customClasses)\n}\n\nfunction combinedClasses(variant: ButtonVariant, size: ButtonSize) {\n const variantGroup1 =\n variant === buttonVariant.outline || variant === buttonVariant.warning || variant === buttonVariant.error\n if (variantGroup1 && size === buttonSize.lg) {\n return \"border-2\"\n }\n return null\n}\n\nexport function buttonCvaIconOnly(\n variant: ButtonVariant | undefined,\n isLoading: boolean | undefined,\n isDisabled: boolean | undefined,\n ...customClasses: (string | boolean | undefined | null | 0)[]\n) {\n const classes = buttonCva2(\n variant,\n buttonSize.none,\n classesButtonClickAnimation,\n \"rounded-full p-2\",\n (isDisabled || isLoading) && classesDisabledDirectly,\n ...customClasses,\n )\n return classes\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buttonCva.js","sources":["../../../lib/interactive/button/buttonCva.ts"],"sourcesContent":["import { classesButtonClickAnimation } from \"~ui/interactive/button/classesButtonClickAnimation\"\nimport { classesButtonDisabled } from \"~ui/interactive/button/classesButtonDisabled\"\nimport { classArr } from \"~ui/utils/classArr\"\nimport { classMerge } from \"~ui/utils/classMerge\"\n\nexport type ButtonVariant = keyof typeof buttonVariant\nexport const buttonVariant = {\n none: \"none\",\n // transparent bg\n outline: \"outline\",\n ghost: \"ghost\",\n link: \"link\",\n // filled black/white/gray\n filled: \"filled\",\n subtle: \"subtle\",\n contrast: \"contrast\",\n // filled colors\n filledYellow: \"filledYellow\",\n filledAmber: \"filledAmber\",\n filledOrange: \"filledOrange\",\n filledRed: \"filledRed\",\n filledGreen: \"filledGreen\",\n filledSky: \"filledSky\",\n filledBlue: \"filledBlue\",\n filledIndigo: \"filledIndigo\",\n // outlined colors\n outlineRed: \"outlineRed\",\n} as const\n\nexport type ButtonSize = keyof typeof buttonSize\nexport const buttonSize = {\n none: \"none\",\n minimal: \"minimal\",\n sm: \"sm\",\n default: \"default\",\n lg: \"lg\",\n} as const\n\nexport type ButtonCvaProps = {\n variant?: ButtonVariant\n size?: ButtonSize\n}\n\nconst baseClasses = classArr(\n \"inline-flex\", // layout\n \"font-medium\", // text\n \"items-center justify-center\", // layout children\n \"rounded-md ring-offset-background\", // rounded, rings\n \"focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\", // focus\n \"transition-colors\", // animation\n \"group\",\n \"cursor-pointer\",\n)\n\nconst variantClasses = {\n //\n // transparent bg\n //\n none: \"\",\n outline: classArr(\n \"bg-transparent dark:bg-transparent\",\n \"dark:text-slate-100\", // text\n \"hover:bg-slate-100\", // bg hover\n \"border border-slate-200 dark:border-slate-700 dark:hover:bg-slate-900\", // border\n ),\n ghost: classArr(\n \"dark:text-slate-100 dark:hover:text-slate-100\", // text\n \"bg-transparent dark:bg-transparent\", // bg\n \"data-[state=open]:bg-transparent dark:data-[state=open]:bg-transparent\", // bg data\n \"hover:bg-slate-100 dark:hover:bg-slate-800\", // bg hover\n ),\n link: classArr(\n \"text-slate-900 dark:text-slate-100\", // text\n \"underline-offset-4 hover:underline \", // underline\n \"bg-transparent dark:bg-transparent\", // bg\n \"hover:bg-transparent dark:hover:bg-transparent\", // bg hover\n ),\n //\n // filled grayscale\n //\n filled: classArr(\n \"dark:text-slate-100\", // text\n \"bg-white dark:bg-black\", // bg\n \"hover:bg-slate-50 dark:hover:bg-slate-900\", // bg hover\n ),\n subtle: classArr(\n \"text-slate-900 dark:text-slate-100\", // text\n \"bg-slate-100 dark:bg-slate-700\", // bg\n \"hover:bg-slate-200 dark:hover:bg-slate-600\", // bg hover\n ),\n contrast: classArr(\n \"text-white dark:text-slate-900 dark:hover:text-slate-900\", // text\n \"bg-slate-900 dark:bg-slate-50\", // bg\n \"hover:bg-slate-700 dark:hover:bg-slate-300\", // bg hover\n ),\n //\n // filled colors\n //\n filledYellow: classArr(\n \"text-white\", // text\n \"bg-yellow-500 dark:bg-yellow-800 \", // bg\n \"hover:bg-yellow-700 dark:hover:bg-yellow-600\", // bg hover\n \"focus:ring-yellow-400 dark:focus:ring-yellow-400\", // focus\n ),\n filledAmber: classArr(\n \"text-white\", // text\n \"bg-amber-500 dark:bg-amber-800 \", // bg\n \"hover:bg-amber-700 dark:hover:bg-amber-600\", // bg hover\n \"focus:ring-amber-400 dark:focus:ring-amber-400\", // focus\n ),\n filledOrange: classArr(\n \"text-white\", // text\n \"bg-orange-500 dark:bg-orange-800 \", // bg\n \"hover:bg-orange-700 dark:hover:bg-orange-600\", // bg hover\n \"focus:ring-orange-400 dark:focus:ring-orange-400\", // focus\n ),\n filledRed: classArr(\n \"text-white\", // text\n \"bg-red-500 dark:bg-red-700\", // bg\n \"hover:bg-red-600 dark:hover:bg-red-600\", // bg hover\n \"focus:ring-red-400 dark:focus:ring-red-400\", // focus\n ),\n filledGreen: classArr(\n \"text-white\", // text\n \"bg-green-500 hover:bg-green-700 dark:hover:bg-green-700\", // bg\n \"focus:ring-green-400 dark:focus:ring-green-400\", // focus\n ),\n filledSky: classArr(\n \"text-white\", // text\n \"bg-sky-500 hover:bg-sky-700 dark:hover:bg-sky-700\", // bg\n \"focus:ring-sky-400 dark:focus:ring-sky-400\", // focus\n ),\n filledIndigo: classArr(\n \"text-white\", // text\n \"bg-indigo-500 dark:bg-indigo-800 \", // bg\n \"hover:bg-indigo-700 dark:hover:bg-indigo-600\", // bg hover\n \"focus:ring-indigo-400 dark:focus:ring-indigo-400\", // focus\n ),\n filledBlue: classArr(\n \"text-white\", // text\n \"bg-blue-500 dark:bg-blue-800 \", // bg\n \"hover:bg-blue-700 dark:hover:bg-blue-600\", // bg hover\n \"focus:ring-blue-400 dark:focus:ring-blue-400\", // focus\n ),\n //\n // outline toast colors\n //\n outlineRed: classArr(\n \"text-red-500 dark:text-red-500\", // text\n \"border border-red-200 dark:border-red-700\", // border\n \"bg-transparent\", // bg\n \"hover:bg-red-100 dark:hover:bg-red-950\", // bg hover\n \"focus:ring-red-400 dark:focus:ring-red-400\", // focus\n ),\n} as const satisfies Record<ButtonVariant, string>\n\nconst sizeClasses = {\n none: \"\",\n minimal: \"rounded-none\",\n sm: \"px-3\",\n default: \"py-2 px-3\",\n lg: \"px-8 py-4 text-lg\",\n} as const satisfies Record<ButtonSize, string>\n\nconst defaultSize = buttonSize.default\n\nexport function buttonCva1(variant: ButtonVariant, ...customClasses: (string | boolean | undefined | null | 0)[]) {\n return buttonCva2(variant, null, ...customClasses)\n}\n\nexport function buttonCva2(\n variant: ButtonVariant = buttonVariant.ghost,\n size: ButtonSize | null = defaultSize,\n ...customClasses: (string | boolean | undefined | null | 0)[]\n) {\n const v = variant\n const s = size ?? defaultSize\n return classMerge(baseClasses, variantClasses[v], sizeClasses[s], combinedClasses(v, s), customClasses)\n}\n\nfunction combinedClasses(variant: ButtonVariant, size: ButtonSize) {\n const variantGroup1 =\n variant === buttonVariant.outline || variant === buttonVariant.filledYellow || variant === buttonVariant.outlineRed\n if (variantGroup1 && size === buttonSize.lg) {\n return \"border-2\"\n }\n return null\n}\n\nexport function buttonCvaIconOnly(\n variant: ButtonVariant = buttonVariant.ghost,\n isLoading: boolean | undefined,\n isDisabled: boolean | undefined,\n ...customClasses: (string | boolean | undefined | null | 0)[]\n) {\n const classes = buttonCva2(\n variant,\n buttonSize.none,\n classesButtonClickAnimation,\n \"rounded-full p-2.5\",\n (isDisabled || isLoading) && classesButtonDisabled,\n ...customClasses,\n )\n return classes\n}\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import { ButtonVariant } from './buttonCva';
2
- export declare function buttonIconCva(variant?: ButtonVariant | null, ...customClasses: (string | boolean | undefined | null | 0 | 0n)[]): string;
2
+ export declare function buttonIconCva(variant?: ButtonVariant, ...customClasses: (string | boolean | undefined | null | 0 | 0n)[]): string;
3
3
  //# sourceMappingURL=buttonIconCva.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buttonIconCva.d.ts","sourceRoot":"","sources":["../../../lib/interactive/button/buttonIconCva.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,kCAAkC,CAAA;AA+CpF,wBAAgB,aAAa,CAC3B,OAAO,GAAE,aAAa,GAAG,IAAqB,EAC9C,GAAG,aAAa,EAAE,CAAC,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,UAGnE"}
1
+ {"version":3,"file":"buttonIconCva.d.ts","sourceRoot":"","sources":["../../../lib/interactive/button/buttonIconCva.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,kCAAkC,CAAA;AAgDpF,wBAAgB,aAAa,CAC3B,OAAO,GAAE,aAAmC,EAC5C,GAAG,aAAa,EAAE,CAAC,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,UAGnE"}
@@ -22,6 +22,7 @@ const baseClasses = classArr(
22
22
  // size
23
23
  );
24
24
  const buttonIconClasses = {
25
+ none: "",
25
26
  // transparent bg
26
27
  outline: classesBlackWhite,
27
28
  ghost: classesBlackWhite,
@@ -29,24 +30,22 @@ const buttonIconClasses = {
29
30
  // filled grayscale
30
31
  filled: classesBlackWhite,
31
32
  subtle: classesBlackWhite,
32
- default: classArr(classesTextFillWhite, "dark:text-black dark:fill-black"),
33
+ contrast: classArr(classesTextFillWhite, "dark:text-black dark:fill-black"),
33
34
  // filled colors
34
- primary: classArr(classesTextFillWhite, "dark:text-indigo-100 dark:fill-indigo-100"),
35
- destructive: classesWhiteWhite,
36
- warning: classesWhiteWhite,
37
- success: classesWhiteWhite,
38
- info: classesWhiteWhite,
35
+ filledYellow: classArr(classesTextFillWhite, "dark:text-yellow-100 dark:fill-yellow-100"),
36
+ filledOrange: classArr(classesTextFillWhite, "dark:text-orange-100 dark:fill-orange-100"),
37
+ filledAmber: classArr(classesTextFillWhite, "dark:text-amber-100 dark:fill-amber-100"),
38
+ filledRed: classArr(classesTextFillWhite, "dark:text-red-100 dark:fill-red-100"),
39
+ filledGreen: classesWhiteWhite,
40
+ filledBlue: classArr(classesTextFillWhite, "dark:text-blue-100 dark:fill-blue-100"),
41
+ filledIndigo: classArr(classesTextFillWhite, "dark:text-indigo-100 dark:fill-indigo-100"),
42
+ // outlineRed: classesWhiteWhite,
43
+ filledSky: classesWhiteWhite,
39
44
  // outlined colors
40
- error: classArr(
41
- "text-destructive dark:text-red-700",
42
- // text
43
- "fill-destructive dark:fill-red-700"
44
- // fill
45
- )
45
+ outlineRed: classArr("text-red-500 fill-red-500 dark:text-red-700 dark:fill-red-700")
46
46
  };
47
- const defaultVariant = buttonVariant.default;
48
- function buttonIconCva(variant = defaultVariant, ...customClasses) {
49
- return classMerge(baseClasses, buttonIconClasses[variant ?? defaultVariant], customClasses);
47
+ function buttonIconCva(variant = buttonVariant.ghost, ...customClasses) {
48
+ return classMerge(baseClasses, buttonIconClasses[variant], customClasses);
50
49
  }
51
50
  export {
52
51
  buttonIconCva
@@ -1 +1 @@
1
- {"version":3,"file":"buttonIconCva.js","sources":["../../../lib/interactive/button/buttonIconCva.ts"],"sourcesContent":["import { buttonVariant, type ButtonVariant } from \"~ui/interactive/button/buttonCva\"\nimport { classArr } from \"~ui/utils/classArr\"\nimport { classMerge } from \"~ui/utils/classMerge\"\n\nconst classesTextFillBlack = \"text-black fill-black\"\nconst classesTextFillWhite = \"text-white fill-white\"\n\nconst classesBlackWhite = classArr(\n classesTextFillBlack,\n \"dark:text-white\", // dark text\n \"dark:fill-white\", // dark fill\n)\n\nconst classesWhiteWhite = classArr(\n classesTextFillWhite,\n \"dark:text-white\", // dark text\n \"dark:fill-white\", // dark fill\n)\n\nconst baseClasses = classArr(\n \"size-6\", // size\n)\n\nconst buttonIconClasses = {\n // transparent bg\n outline: classesBlackWhite,\n ghost: classesBlackWhite,\n link: classesBlackWhite,\n // filled grayscale\n filled: classesBlackWhite,\n subtle: classesBlackWhite,\n default: classArr(classesTextFillWhite, \"dark:text-black dark:fill-black\"),\n // filled colors\n primary: classArr(classesTextFillWhite, \"dark:text-indigo-100 dark:fill-indigo-100\"),\n destructive: classesWhiteWhite,\n warning: classesWhiteWhite,\n success: classesWhiteWhite,\n info: classesWhiteWhite,\n // outlined colors\n error: classArr(\n \"text-destructive dark:text-red-700\", // text\n \"fill-destructive dark:fill-red-700\", // fill\n ),\n} as const satisfies Record<ButtonVariant, string>\n\nconst defaultVariant = buttonVariant.default\n\nexport function buttonIconCva(\n variant: ButtonVariant | null = defaultVariant,\n ...customClasses: (string | boolean | undefined | null | 0 | 0n)[]\n) {\n return classMerge(baseClasses, buttonIconClasses[variant ?? defaultVariant], customClasses)\n}\n"],"names":[],"mappings":";;;AAIA,MAAM,uBAAuB;AAC7B,MAAM,uBAAuB;AAE7B,MAAM,oBAAoB;AAAA,EACxB;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AACF;AAEA,MAAM,oBAAoB;AAAA,EACxB;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AACF;AAEA,MAAM,cAAc;AAAA,EAClB;AAAA;AACF;AAEA,MAAM,oBAAoB;AAAA;AAAA,EAExB,SAAS;AAAA,EACT,OAAO;AAAA,EACP,MAAM;AAAA;AAAA,EAEN,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS,SAAS,sBAAsB,iCAAiC;AAAA;AAAA,EAEzE,SAAS,SAAS,sBAAsB,2CAA2C;AAAA,EACnF,aAAa;AAAA,EACb,SAAS;AAAA,EACT,SAAS;AAAA,EACT,MAAM;AAAA;AAAA,EAEN,OAAO;AAAA,IACL;AAAA;AAAA,IACA;AAAA;AAAA,EAAA;AAEJ;AAEA,MAAM,iBAAiB,cAAc;AAE9B,SAAS,cACd,UAAgC,mBAC7B,eACH;AACA,SAAO,WAAW,aAAa,kBAAkB,WAAW,cAAc,GAAG,aAAa;AAC5F;"}
1
+ {"version":3,"file":"buttonIconCva.js","sources":["../../../lib/interactive/button/buttonIconCva.ts"],"sourcesContent":["import { buttonVariant, type ButtonVariant } from \"~ui/interactive/button/buttonCva\"\nimport { classArr } from \"~ui/utils/classArr\"\nimport { classMerge } from \"~ui/utils/classMerge\"\n\nconst classesTextFillBlack = \"text-black fill-black\"\nconst classesTextFillWhite = \"text-white fill-white\"\n\nconst classesBlackWhite = classArr(\n classesTextFillBlack,\n \"dark:text-white\", // dark text\n \"dark:fill-white\", // dark fill\n)\n\nconst classesWhiteWhite = classArr(\n classesTextFillWhite,\n \"dark:text-white\", // dark text\n \"dark:fill-white\", // dark fill\n)\n\nconst baseClasses = classArr(\n \"size-6\", // size\n)\n\nconst buttonIconClasses = {\n none: \"\",\n // transparent bg\n outline: classesBlackWhite,\n ghost: classesBlackWhite,\n link: classesBlackWhite,\n // filled grayscale\n filled: classesBlackWhite,\n subtle: classesBlackWhite,\n contrast: classArr(classesTextFillWhite, \"dark:text-black dark:fill-black\"),\n // filled colors\n filledYellow: classArr(classesTextFillWhite, \"dark:text-yellow-100 dark:fill-yellow-100\"),\n filledOrange: classArr(classesTextFillWhite, \"dark:text-orange-100 dark:fill-orange-100\"),\n filledAmber: classArr(classesTextFillWhite, \"dark:text-amber-100 dark:fill-amber-100\"),\n filledRed: classArr(classesTextFillWhite, \"dark:text-red-100 dark:fill-red-100\"),\n\n filledGreen: classesWhiteWhite,\n filledBlue: classArr(classesTextFillWhite, \"dark:text-blue-100 dark:fill-blue-100\"),\n filledIndigo: classArr(classesTextFillWhite, \"dark:text-indigo-100 dark:fill-indigo-100\"),\n // outlineRed: classesWhiteWhite,\n filledSky: classesWhiteWhite,\n // outlined colors\n outlineRed: classArr(\"text-red-500 fill-red-500 dark:text-red-700 dark:fill-red-700\"),\n} as const satisfies Record<ButtonVariant, string>\n\nexport function buttonIconCva(\n variant: ButtonVariant = buttonVariant.ghost,\n ...customClasses: (string | boolean | undefined | null | 0 | 0n)[]\n) {\n return classMerge(baseClasses, buttonIconClasses[variant], customClasses)\n}\n"],"names":[],"mappings":";;;AAIA,MAAM,uBAAuB;AAC7B,MAAM,uBAAuB;AAE7B,MAAM,oBAAoB;AAAA,EACxB;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AACF;AAEA,MAAM,oBAAoB;AAAA,EACxB;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AACF;AAEA,MAAM,cAAc;AAAA,EAClB;AAAA;AACF;AAEA,MAAM,oBAAoB;AAAA,EACxB,MAAM;AAAA;AAAA,EAEN,SAAS;AAAA,EACT,OAAO;AAAA,EACP,MAAM;AAAA;AAAA,EAEN,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,UAAU,SAAS,sBAAsB,iCAAiC;AAAA;AAAA,EAE1E,cAAc,SAAS,sBAAsB,2CAA2C;AAAA,EACxF,cAAc,SAAS,sBAAsB,2CAA2C;AAAA,EACxF,aAAa,SAAS,sBAAsB,yCAAyC;AAAA,EACrF,WAAW,SAAS,sBAAsB,qCAAqC;AAAA,EAE/E,aAAa;AAAA,EACb,YAAY,SAAS,sBAAsB,uCAAuC;AAAA,EAClF,cAAc,SAAS,sBAAsB,2CAA2C;AAAA;AAAA,EAExF,WAAW;AAAA;AAAA,EAEX,YAAY,SAAS,+DAA+D;AACtF;AAEO,SAAS,cACd,UAAyB,cAAc,UACpC,eACH;AACA,SAAO,WAAW,aAAa,kBAAkB,OAAO,GAAG,aAAa;AAC1E;"}
@@ -0,0 +1,2 @@
1
+ export declare const classesButtonDisabled = "cursor-not-allowed opacity-70";
2
+ //# sourceMappingURL=classesButtonDisabled.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classesButtonDisabled.d.ts","sourceRoot":"","sources":["../../../lib/interactive/button/classesButtonDisabled.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,kCAAkC,CAAA"}
@@ -0,0 +1,5 @@
1
+ const classesButtonDisabled = "cursor-not-allowed opacity-70";
2
+ export {
3
+ classesButtonDisabled
4
+ };
5
+ //# sourceMappingURL=classesButtonDisabled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classesButtonDisabled.js","sources":["../../../lib/interactive/button/classesButtonDisabled.ts"],"sourcesContent":["export const classesButtonDisabled = \"cursor-not-allowed opacity-70\"\n"],"names":[],"mappings":"AAAO,MAAM,wBAAwB;"}
@@ -1,4 +1,4 @@
1
- import { template, insert, createComponent, memo, effect, className } from "solid-js/web";
1
+ import { insert, createComponent, memo, effect, className, template } from "solid-js/web";
2
2
  import { mdiChevronDown } from "@mdi/js";
3
3
  import { Show } from "solid-js";
4
4
  import { Icon } from "../../static/icon/Icon.js";
@@ -1,4 +1,4 @@
1
- import { createComponent, memo, template, insert } from "solid-js/web";
1
+ import { createComponent, memo, insert, template } from "solid-js/web";
2
2
  import index_default from "../../node_modules/@corvu/dialog/dist/index.js";
3
3
  import { mdiClose } from "@mdi/js";
4
4
  import { classesDisabledDirectly } from "../../classes/classesDisabledDirectly.js";
@@ -1,4 +1,4 @@
1
- import { createComponent, mergeProps, memo, template, insert } from "solid-js/web";
1
+ import { createComponent, mergeProps, insert, memo, template } from "solid-js/web";
2
2
  import index_default from "../../node_modules/@corvu/dialog/dist/index.js";
3
3
  import { mdiClose } from "@mdi/js";
4
4
  import { splitProps } from "solid-js";
@@ -1,4 +1,4 @@
1
- import { delegateEvents, template, insert, createComponent, effect, className, setAttribute } from "solid-js/web";
1
+ import { delegateEvents, insert, createComponent, effect, className, setAttribute, template } from "solid-js/web";
2
2
  import { Show } from "solid-js";
3
3
  import { createSignalObject } from "../../utils/createSignalObject.js";
4
4
  var _tmpl$ = /* @__PURE__ */ template(`<div class="fixed inset-0 z-50 lg:hidden"role=dialog aria-modal=true aria-labelledby=mobile-sidebar-title><button type=button class="fixed inset-0 bg-black bg-opacity-50"aria-label="Close sidebar"></button><aside class="fixed inset-y-0 left-0 w-64 bg-gray-800 text-white flex flex-col transform transition-transform duration-300 ease-in-out">`), _tmpl$2 = /* @__PURE__ */ template(`<div class="flex h-screen bg-gray-100 dark:bg-gray-900"><aside></aside><div class="flex-1 flex flex-col"><header class="bg-white dark:bg-gray-800 shadow-sm p-4 flex items-center justify-between"><button type=button aria-label="Open main menu"class="lg:hidden p-2 rounded hover:bg-gray-200 dark:hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-gray-400"><svg class="w-6 h-6"fill=none stroke=currentColor viewBox="0 0 24 24"><title>Menu</title><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M4 6h16M4 12h16M4 18h16"></path></svg></button><button type=button class="hidden lg:block p-2 rounded hover:bg-gray-200 dark:hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-gray-400 cursor-pointer"><svg class="w-6 h-6"fill=none stroke=currentColor viewBox="0 0 24 24"><title>Toggle sidebar</title><path stroke-linecap=round stroke-linejoin=round stroke-width=2></path></svg></button></header><main class="flex-1 p-4 overflow-y-auto">`);
@@ -1,4 +1,4 @@
1
- import { template, spread, mergeProps, insert, memo, createComponent } from "solid-js/web";
1
+ import { spread, mergeProps, insert, memo, createComponent, template } from "solid-js/web";
2
2
  import { splitProps } from "solid-js";
3
3
  import { buttonCva2 } from "../button/buttonCva.js";
4
4
  import { buttonIconCva } from "../button/buttonIconCva.js";
@@ -1,4 +1,4 @@
1
- import { template, spread, mergeProps, insert, memo, createComponent } from "solid-js/web";
1
+ import { spread, mergeProps, insert, memo, createComponent, template } from "solid-js/web";
2
2
  import { splitProps } from "solid-js";
3
3
  import { buttonCvaIconOnly } from "../button/buttonCva.js";
4
4
  import { buttonIconCva } from "../button/buttonIconCva.js";
@@ -1,4 +1,4 @@
1
- import { template, spread, mergeProps } from "solid-js/web";
1
+ import { spread, mergeProps, template } from "solid-js/web";
2
2
  import { splitProps } from "solid-js";
3
3
  import { classesTextLink } from "../../classes/classesTextLink.js";
4
4
  import { classMerge } from "../../utils/classMerge.js";
@@ -1,4 +1,4 @@
1
- import { memo, template, insert, createComponent, effect, className } from "solid-js/web";
1
+ import { memo, insert, createComponent, effect, className, template } from "solid-js/web";
2
2
  import { LinkText } from "../link/LinkText.js";
3
3
  import { BlueBulletPoint } from "../../static/lists/BlueBulletPoint.js";
4
4
  import { classMerge } from "../../utils/classMerge.js";
@@ -1,4 +1,4 @@
1
- import { delegateEvents, template, insert, createComponent, effect, setAttribute, className } from "solid-js/web";
1
+ import { delegateEvents, insert, createComponent, effect, setAttribute, className, template } from "solid-js/web";
2
2
  import { Key } from "@solid-primitives/keyed";
3
3
  import { createUniqueId } from "solid-js";
4
4
  import { classArr } from "../../utils/classArr.js";
@@ -1,5 +1,5 @@
1
- import { MayHaveClass } from '../../utils/MayHaveClass';
2
1
  import { ThemeButtonText } from './ThemeButtonText';
2
+ import { MayHaveClass } from '../../utils/MayHaveClass';
3
3
  export interface ThemeButtonProps extends MayHaveClass {
4
4
  showText?: boolean;
5
5
  texts?: ThemeButtonText;
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeButton.d.ts","sourceRoot":"","sources":["../../../lib/interactive/theme/ThemeButton.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAA;AAG5E,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,eAAe,CAAA;CACxB;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,gBAAgB,kCA0B9C"}
1
+ {"version":3,"file":"ThemeButton.d.ts","sourceRoot":"","sources":["../../../lib/interactive/theme/ThemeButton.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAA;AAK5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAE1D,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,eAAe,CAAA;CACxB;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,gBAAgB,kCA0B9C"}
@@ -1,16 +1,16 @@
1
1
  import { createComponent } from "solid-js/web";
2
- import { createEffect, onCleanup } from "solid-js";
2
+ import { onMount, onCleanup } from "solid-js";
3
3
  import { buttonVariant } from "../button/buttonCva.js";
4
4
  import { ButtonIconOnly } from "../button/ButtonIconOnly.js";
5
+ import { themeButtonTextDefault } from "./ThemeButtonText.js";
5
6
  import { themeInit, themeSignal, themeRotate } from "./themeSignal.js";
6
7
  import { themeIcon } from "./themeVariant.js";
7
8
  import { classMerge } from "../../utils/classMerge.js";
8
- import { themeButtonTextDefault } from "./ThemeButtonText.js";
9
9
  function ThemeButton(p) {
10
- createEffect(themeInit);
11
10
  const handleGlobalKeyDown = createGlobalKeyHandler();
12
11
  const texts = p.texts ?? themeButtonTextDefault;
13
- createEffect(() => {
12
+ onMount(() => {
13
+ themeInit();
14
14
  window.addEventListener("keydown", handleGlobalKeyDown);
15
15
  onCleanup(() => window.removeEventListener("keydown", handleGlobalKeyDown));
16
16
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeButton.js","sources":["../../../lib/interactive/theme/ThemeButton.tsx"],"sourcesContent":["import { createEffect, onCleanup } from \"solid-js\"\nimport { buttonVariant } from \"~ui/interactive/button/buttonCva\"\nimport { ButtonIconOnly } from \"~ui/interactive/button/ButtonIconOnly\"\nimport { themeInit, themeRotate, themeSignal } from \"~ui/interactive/theme/themeSignal\"\nimport { themeIcon } from \"~ui/interactive/theme/themeVariant\"\nimport { classMerge } from \"~ui/utils/classMerge\"\nimport type { MayHaveClass } from \"~ui/utils/MayHaveClass\"\nimport type { ThemeButtonText } from \"~ui/interactive/theme/ThemeButtonText\"\nimport { themeButtonTextDefault } from \"~ui/interactive/theme/ThemeButtonText\"\n\nexport interface ThemeButtonProps extends MayHaveClass {\n showText?: boolean\n texts?: ThemeButtonText\n}\n\nexport function ThemeButton(p: ThemeButtonProps) {\n createEffect(themeInit)\n const navigate = (to: string) => {}\n const handleGlobalKeyDown = createGlobalKeyHandler(navigate)\n\n const texts = p.texts ?? themeButtonTextDefault\n\n createEffect(() => {\n window.addEventListener(\"keydown\", handleGlobalKeyDown)\n onCleanup(() => window.removeEventListener(\"keydown\", handleGlobalKeyDown))\n })\n\n const currentTheme = themeSignal.get()\n const themeName = texts[currentTheme]\n\n return (\n <ButtonIconOnly\n title={texts.currentTheme(themeName)}\n icon={themeIcon(currentTheme)}\n variant={buttonVariant.ghost}\n class={classMerge(p.class)}\n onClick={themeRotate}\n >\n {p.showText && themeName}\n </ButtonIconOnly>\n )\n}\n\nfunction createGlobalKeyHandler(navigate: (to: string) => void) {\n return (e: KeyboardEvent) => {\n if (e.key === \"s\" && e.altKey) {\n e.preventDefault()\n themeRotate()\n } else if (e.key === \"d\" && e.altKey) {\n e.preventDefault()\n navigate(\"/demos\")\n }\n }\n}\n"],"names":["ThemeButton","p","createEffect","themeInit","handleGlobalKeyDown","createGlobalKeyHandler","texts","themeButtonTextDefault","window","addEventListener","onCleanup","removeEventListener","currentTheme","themeSignal","get","themeName","_$createComponent","ButtonIconOnly","title","icon","themeIcon","variant","buttonVariant","ghost","classMerge","class","onClick","themeRotate","children","showText","navigate","e","key","altKey","preventDefault"],"mappings":";;;;;;;;AAeO,SAASA,YAAYC,GAAqB;AAC/CC,eAAaC,SAAS;AAEtB,QAAMC,sBAAsBC,uBAA+B;AAE3D,QAAMC,QAAQL,EAAEK,SAASC;AAEzBL,eAAa,MAAM;AACjBM,WAAOC,iBAAiB,WAAWL,mBAAmB;AACtDM,cAAU,MAAMF,OAAOG,oBAAoB,WAAWP,mBAAmB,CAAC;AAAA,EAC5E,CAAC;AAED,QAAMQ,eAAeC,YAAYC,IAAAA;AACjC,QAAMC,YAAYT,MAAMM,YAAY;AAEpC,SAAAI,gBACGC,gBAAc;AAAA,IAAA,IACbC,QAAK;AAAA,aAAEZ,MAAMM,aAAaG,SAAS;AAAA,IAAC;AAAA,IAAA,IACpCI,OAAI;AAAA,aAAEC,UAAUR,YAAY;AAAA,IAAC;AAAA,IAAA,IAC7BS,UAAO;AAAA,aAAEC,cAAcC;AAAAA,IAAK;AAAA,IAAA,KAAA,OAAA,IAAA;AAAA,aACrBC,WAAWvB,EAAEwB,KAAK;AAAA,IAAC;AAAA,IAC1BC,SAASC;AAAAA,IAAW,IAAAC,WAAA;AAAA,aAEnB3B,EAAE4B,YAAYd;AAAAA,IAAS;AAAA,EAAA,CAAA;AAG9B;AAEA,SAASV,uBAAuByB,UAAgC;AAC9D,SAAO,CAACC,MAAqB;AAC3B,QAAIA,EAAEC,QAAQ,OAAOD,EAAEE,QAAQ;AAC7BF,QAAEG,eAAAA;AACFP,kBAAAA;AAAAA,IACF,WAAWI,EAAEC,QAAQ,OAAOD,EAAEE,QAAQ;AACpCF,QAAEG,eAAAA;AAAAA,IAEJ;AAAA,EACF;AACF;"}
1
+ {"version":3,"file":"ThemeButton.js","sources":["../../../lib/interactive/theme/ThemeButton.tsx"],"sourcesContent":["import { onCleanup, onMount } from \"solid-js\"\nimport { buttonVariant } from \"~ui/interactive/button/buttonCva\"\nimport { ButtonIconOnly } from \"~ui/interactive/button/ButtonIconOnly\"\nimport type { ThemeButtonText } from \"~ui/interactive/theme/ThemeButtonText\"\nimport { themeButtonTextDefault } from \"~ui/interactive/theme/ThemeButtonText\"\nimport { themeInit, themeRotate, themeSignal } from \"~ui/interactive/theme/themeSignal\"\nimport { themeIcon } from \"~ui/interactive/theme/themeVariant\"\nimport { classMerge } from \"~ui/utils/classMerge\"\nimport type { MayHaveClass } from \"~ui/utils/MayHaveClass\"\n\nexport interface ThemeButtonProps extends MayHaveClass {\n showText?: boolean\n texts?: ThemeButtonText\n}\n\nexport function ThemeButton(p: ThemeButtonProps) {\n const navigate = (to: string) => {}\n const handleGlobalKeyDown = createGlobalKeyHandler(navigate)\n\n const texts = p.texts ?? themeButtonTextDefault\n\n onMount(() => {\n themeInit()\n window.addEventListener(\"keydown\", handleGlobalKeyDown)\n onCleanup(() => window.removeEventListener(\"keydown\", handleGlobalKeyDown))\n })\n\n const currentTheme = themeSignal.get()\n const themeName = texts[currentTheme]\n\n return (\n <ButtonIconOnly\n title={texts.currentTheme(themeName)}\n icon={themeIcon(currentTheme)}\n variant={buttonVariant.ghost}\n class={classMerge(p.class)}\n onClick={themeRotate}\n >\n {p.showText && themeName}\n </ButtonIconOnly>\n )\n}\n\nfunction createGlobalKeyHandler(navigate: (to: string) => void) {\n return (e: KeyboardEvent) => {\n if (e.key === \"s\" && e.altKey) {\n e.preventDefault()\n themeRotate()\n } else if (e.key === \"d\" && e.altKey) {\n e.preventDefault()\n navigate(\"/demos\")\n }\n }\n}\n"],"names":["ThemeButton","p","handleGlobalKeyDown","createGlobalKeyHandler","texts","themeButtonTextDefault","onMount","themeInit","window","addEventListener","onCleanup","removeEventListener","currentTheme","themeSignal","get","themeName","_$createComponent","ButtonIconOnly","title","icon","themeIcon","variant","buttonVariant","ghost","classMerge","class","onClick","themeRotate","children","showText","navigate","e","key","altKey","preventDefault"],"mappings":";;;;;;;;AAeO,SAASA,YAAYC,GAAqB;AAE/C,QAAMC,sBAAsBC,uBAA+B;AAE3D,QAAMC,QAAQH,EAAEG,SAASC;AAEzBC,UAAQ,MAAM;AACZC,cAAAA;AACAC,WAAOC,iBAAiB,WAAWP,mBAAmB;AACtDQ,cAAU,MAAMF,OAAOG,oBAAoB,WAAWT,mBAAmB,CAAC;AAAA,EAC5E,CAAC;AAED,QAAMU,eAAeC,YAAYC,IAAAA;AACjC,QAAMC,YAAYX,MAAMQ,YAAY;AAEpC,SAAAI,gBACGC,gBAAc;AAAA,IAAA,IACbC,QAAK;AAAA,aAAEd,MAAMQ,aAAaG,SAAS;AAAA,IAAC;AAAA,IAAA,IACpCI,OAAI;AAAA,aAAEC,UAAUR,YAAY;AAAA,IAAC;AAAA,IAAA,IAC7BS,UAAO;AAAA,aAAEC,cAAcC;AAAAA,IAAK;AAAA,IAAA,KAAA,OAAA,IAAA;AAAA,aACrBC,WAAWvB,EAAEwB,KAAK;AAAA,IAAC;AAAA,IAC1BC,SAASC;AAAAA,IAAW,IAAAC,WAAA;AAAA,aAEnB3B,EAAE4B,YAAYd;AAAAA,IAAS;AAAA,EAAA,CAAA;AAG9B;AAEA,SAASZ,uBAAuB2B,UAAgC;AAC9D,SAAO,CAACC,MAAqB;AAC3B,QAAIA,EAAEC,QAAQ,OAAOD,EAAEE,QAAQ;AAC7BF,QAAEG,eAAAA;AACFP,kBAAAA;AAAAA,IACF,WAAWI,EAAEC,QAAQ,OAAOD,EAAEE,QAAQ;AACpCF,QAAEG,eAAAA;AAAAA,IAEJ;AAAA,EACF;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"themeSignal.d.ts","sourceRoot":"","sources":["../../../lib/interactive/theme/themeSignal.ts"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,YAAY,EAElB,MAAM,oCAAoC,CAAA;AAK3C,eAAO,MAAM,WAAW,8EAAoD,CAAA;AAE5E,wBAAgB,SAAS,SAIxB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,QAKnE;AAmBD,wBAAgB,WAAW,SAS1B"}
1
+ {"version":3,"file":"themeSignal.d.ts","sourceRoot":"","sources":["../../../lib/interactive/theme/themeSignal.ts"],"names":[],"mappings":"AAGA,OAAO,EAOL,KAAK,YAAY,EAElB,MAAM,oCAAoC,CAAA;AAK3C,eAAO,MAAM,WAAW,8EAAoD,CAAA;AAE5E,wBAAgB,SAAS,SAKxB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,QAKnE;AAmBD,wBAAgB,WAAW,SAS1B"}
@@ -1,11 +1,13 @@
1
+ import { isServer } from "solid-js/web";
1
2
  import * as v from "valibot";
2
3
  import { themeButtonTextDefault } from "./ThemeButtonText.js";
3
- import { themeVariant, getThemeFromStorageOrBrowserPref, setThemeToBrowser, themeLocalStorageKey, nextTheme2, themeIcon, themeSchema } from "./themeVariant.js";
4
+ import { themeVariant, getThemeFromStorageOrBrowserPref, nextTheme2, themeIcon, setThemeToBrowser, themeLocalStorageKey, themeSchema } from "./themeVariant.js";
4
5
  import { toastAdd } from "../toast/toastAdd.js";
5
6
  import { toastVariant } from "../toast/toastVariant.js";
6
7
  import { createSignalObject } from "../../utils/createSignalObject.js";
7
8
  const themeSignal = createSignalObject(themeVariant.os);
8
9
  function themeInit() {
10
+ if (isServer) return;
9
11
  const theme = getThemeFromStorageOrBrowserPref();
10
12
  themeSet(theme, false);
11
13
  themeRegisterStorageListener();
@@ -1 +1 @@
1
- {"version":3,"file":"themeSignal.js","sources":["../../../lib/interactive/theme/themeSignal.ts"],"sourcesContent":["import * as v from \"valibot\"\nimport { themeButtonTextDefault } from \"~ui/interactive/theme/ThemeButtonText\"\nimport {\n getThemeFromStorageOrBrowserPref,\n nextTheme2,\n setThemeToBrowser,\n themeIcon,\n themeLocalStorageKey,\n themeSchema,\n type ThemeVariant,\n themeVariant,\n} from \"~ui/interactive/theme/themeVariant\"\nimport { toastAdd } from \"~ui/interactive/toast/toastAdd\"\nimport { toastVariant } from \"~ui/interactive/toast/toastVariant\"\nimport { createSignalObject } from \"~ui/utils/createSignalObject\"\n\nexport const themeSignal = createSignalObject<ThemeVariant>(themeVariant.os)\n\nexport function themeInit() {\n const theme = getThemeFromStorageOrBrowserPref()\n themeSet(theme, false)\n themeRegisterStorageListener()\n}\n\nexport function themeSet(theme: ThemeVariant, saveToStorage: boolean) {\n themeSignal.set(theme)\n setThemeToBrowser(theme)\n if (!saveToStorage) return\n localStorage.setItem(themeLocalStorageKey, theme)\n}\n\nfunction themeRegisterStorageListener() {\n const onStorage = (e: StorageEvent) => {\n if (e.key !== themeLocalStorageKey) return\n const themeString = e.newValue\n const result = v.safeParse(themeSchema, themeString)\n if (!result.success) {\n console.log(\"failed to parse storage event\")\n return\n }\n themeSet(result.output, false)\n }\n window.addEventListener(\"storage\", onStorage)\n return () => {\n window.removeEventListener(\"storage\", onStorage)\n }\n}\n\nexport function themeRotate() {\n const currentTheme = themeSignal.get()\n const newTheme = nextTheme2(currentTheme)\n\n const themeText = themeButtonTextDefault[newTheme]\n const title = themeButtonTextDefault.setTheme(themeText)\n const icon = themeIcon(newTheme)\n toastAdd({ title, icon, variant: toastVariant.default })\n themeSet(newTheme, true)\n}\n"],"names":[],"mappings":";;;;;;AAgBO,MAAM,cAAc,mBAAiC,aAAa,EAAE;AAEpE,SAAS,YAAY;AAC1B,QAAM,QAAQ,iCAAA;AACd,WAAS,OAAO,KAAK;AACrB,+BAAA;AACF;AAEO,SAAS,SAAS,OAAqB,eAAwB;AACpE,cAAY,IAAI,KAAK;AACrB,oBAAkB,KAAK;AACvB,MAAI,CAAC,cAAe;AACpB,eAAa,QAAQ,sBAAsB,KAAK;AAClD;AAEA,SAAS,+BAA+B;AACtC,QAAM,YAAY,CAAC,MAAoB;AACrC,QAAI,EAAE,QAAQ,qBAAsB;AACpC,UAAM,cAAc,EAAE;AACtB,UAAM,SAAS,EAAE,UAAU,aAAa,WAAW;AACnD,QAAI,CAAC,OAAO,SAAS;AACnB,cAAQ,IAAI,+BAA+B;AAC3C;AAAA,IACF;AACA,aAAS,OAAO,QAAQ,KAAK;AAAA,EAC/B;AACA,SAAO,iBAAiB,WAAW,SAAS;AAC5C,SAAO,MAAM;AACX,WAAO,oBAAoB,WAAW,SAAS;AAAA,EACjD;AACF;AAEO,SAAS,cAAc;AAC5B,QAAM,eAAe,YAAY,IAAA;AACjC,QAAM,WAAW,WAAW,YAAY;AAExC,QAAM,YAAY,uBAAuB,QAAQ;AACjD,QAAM,QAAQ,uBAAuB,SAAS,SAAS;AACvD,QAAM,OAAO,UAAU,QAAQ;AAC/B,WAAS,EAAE,OAAO,MAAM,SAAS,aAAa,SAAS;AACvD,WAAS,UAAU,IAAI;AACzB;"}
1
+ {"version":3,"file":"themeSignal.js","sources":["../../../lib/interactive/theme/themeSignal.ts"],"sourcesContent":["import { isServer } from \"solid-js/web\"\nimport * as v from \"valibot\"\nimport { themeButtonTextDefault } from \"~ui/interactive/theme/ThemeButtonText\"\nimport {\n getThemeFromStorageOrBrowserPref,\n nextTheme2,\n setThemeToBrowser,\n themeIcon,\n themeLocalStorageKey,\n themeSchema,\n type ThemeVariant,\n themeVariant,\n} from \"~ui/interactive/theme/themeVariant\"\nimport { toastAdd } from \"~ui/interactive/toast/toastAdd\"\nimport { toastVariant } from \"~ui/interactive/toast/toastVariant\"\nimport { createSignalObject } from \"~ui/utils/createSignalObject\"\n\nexport const themeSignal = createSignalObject<ThemeVariant>(themeVariant.os)\n\nexport function themeInit() {\n if (isServer) return // Skip during SSR\n const theme = getThemeFromStorageOrBrowserPref()\n themeSet(theme, false)\n themeRegisterStorageListener()\n}\n\nexport function themeSet(theme: ThemeVariant, saveToStorage: boolean) {\n themeSignal.set(theme)\n setThemeToBrowser(theme)\n if (!saveToStorage) return\n localStorage.setItem(themeLocalStorageKey, theme)\n}\n\nfunction themeRegisterStorageListener() {\n const onStorage = (e: StorageEvent) => {\n if (e.key !== themeLocalStorageKey) return\n const themeString = e.newValue\n const result = v.safeParse(themeSchema, themeString)\n if (!result.success) {\n console.log(\"failed to parse storage event\")\n return\n }\n themeSet(result.output, false)\n }\n window.addEventListener(\"storage\", onStorage)\n return () => {\n window.removeEventListener(\"storage\", onStorage)\n }\n}\n\nexport function themeRotate() {\n const currentTheme = themeSignal.get()\n const newTheme = nextTheme2(currentTheme)\n\n const themeText = themeButtonTextDefault[newTheme]\n const title = themeButtonTextDefault.setTheme(themeText)\n const icon = themeIcon(newTheme)\n toastAdd({ title, icon, variant: toastVariant.default })\n themeSet(newTheme, true)\n}\n"],"names":[],"mappings":";;;;;;;AAiBO,MAAM,cAAc,mBAAiC,aAAa,EAAE;AAEpE,SAAS,YAAY;AAC1B,MAAI,SAAU;AACd,QAAM,QAAQ,iCAAA;AACd,WAAS,OAAO,KAAK;AACrB,+BAAA;AACF;AAEO,SAAS,SAAS,OAAqB,eAAwB;AACpE,cAAY,IAAI,KAAK;AACrB,oBAAkB,KAAK;AACvB,MAAI,CAAC,cAAe;AACpB,eAAa,QAAQ,sBAAsB,KAAK;AAClD;AAEA,SAAS,+BAA+B;AACtC,QAAM,YAAY,CAAC,MAAoB;AACrC,QAAI,EAAE,QAAQ,qBAAsB;AACpC,UAAM,cAAc,EAAE;AACtB,UAAM,SAAS,EAAE,UAAU,aAAa,WAAW;AACnD,QAAI,CAAC,OAAO,SAAS;AACnB,cAAQ,IAAI,+BAA+B;AAC3C;AAAA,IACF;AACA,aAAS,OAAO,QAAQ,KAAK;AAAA,EAC/B;AACA,SAAO,iBAAiB,WAAW,SAAS;AAC5C,SAAO,MAAM;AACX,WAAO,oBAAoB,WAAW,SAAS;AAAA,EACjD;AACF;AAEO,SAAS,cAAc;AAC5B,QAAM,eAAe,YAAY,IAAA;AACjC,QAAM,WAAW,WAAW,YAAY;AAExC,QAAM,YAAY,uBAAuB,QAAQ;AACjD,QAAM,QAAQ,uBAAuB,SAAS,SAAS;AACvD,QAAM,OAAO,UAAU,QAAQ;AAC/B,WAAS,EAAE,OAAO,MAAM,SAAS,aAAa,SAAS;AACvD,WAAS,UAAU,IAAI;AACzB;"}
@@ -1,4 +1,4 @@
1
- import { template, setAttribute, insert, createComponent, mergeProps, effect, className } from "solid-js/web";
1
+ import { setAttribute, insert, createComponent, mergeProps, effect, className, template } from "solid-js/web";
2
2
  import { mdiClose } from "@mdi/js";
3
3
  import { Show } from "solid-js";
4
4
  import { ttt } from "../../i18n/ttt.js";
@@ -1,4 +1,4 @@
1
- import { template, insert, createComponent, mergeProps, effect, className } from "solid-js/web";
1
+ import { insert, createComponent, mergeProps, effect, className, template } from "solid-js/web";
2
2
  import { Key } from "@solid-primitives/keyed";
3
3
  import { Toast } from "./Toast.js";
4
4
  import { toasterState } from "./toasterState.js";
@@ -1,4 +1,4 @@
1
- import { delegateEvents, template, spread, mergeProps, insert, createComponent } from "solid-js/web";
1
+ import { delegateEvents, spread, mergeProps, insert, createComponent, template } from "solid-js/web";
2
2
  import { splitProps } from "solid-js";
3
3
  import { classesDisabledDirectly } from "../../classes/classesDisabledDirectly.js";
4
4
  import { buttonCvaIconOnly } from "../button/buttonCva.js";
@@ -0,0 +1,45 @@
1
+ import { jsonStringifyPretty } from "../json/jsonStringifyPretty.js";
2
+ async function runCmdAsync(cmd, logBunCmd = true) {
3
+ const startedAt = performance.now();
4
+ if (logBunCmd) {
5
+ console.log({ cmd });
6
+ }
7
+ const process = Bun.spawn(cmd, {
8
+ stdout: "pipe",
9
+ stderr: "pipe"
10
+ });
11
+ const exitCode = await process.exited;
12
+ const output = await process.stdout.text();
13
+ const error = await process.stderr.text();
14
+ const outputLines = output.split("\n").filter((s) => s.length > 0);
15
+ const errorLines = error.split("\n").filter((s) => s.length > 0);
16
+ const lines = [...outputLines, ...errorLines];
17
+ const endedAt = performance.now();
18
+ const ms = Math.round(endedAt - startedAt);
19
+ const r = {
20
+ cmd,
21
+ success: exitCode === 0,
22
+ exitCode,
23
+ lines,
24
+ ms
25
+ };
26
+ if (logBunCmd) {
27
+ if (lines.length < 8) {
28
+ console.log(r);
29
+ } else {
30
+ const l = {
31
+ cmd,
32
+ success: exitCode === 0,
33
+ exitCode,
34
+ ms
35
+ };
36
+ console.log(l);
37
+ console.log(jsonStringifyPretty(lines));
38
+ }
39
+ }
40
+ return r;
41
+ }
42
+ export {
43
+ runCmdAsync
44
+ };
45
+ //# sourceMappingURL=runCmdAsync.js.map