@ersbeth/picokit 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/README.md +97 -0
  2. package/dist/components/index.d.ts +4 -0
  3. package/dist/components/index.d.ts.map +1 -0
  4. package/dist/components/layout/cluster.d.ts +6 -0
  5. package/dist/components/layout/cluster.d.ts.map +1 -0
  6. package/dist/components/layout/container.d.ts +6 -0
  7. package/dist/components/layout/container.d.ts.map +1 -0
  8. package/dist/components/layout/dual.d.ts +14 -0
  9. package/dist/components/layout/dual.d.ts.map +1 -0
  10. package/dist/components/layout/index.d.ts +5 -0
  11. package/dist/components/layout/index.d.ts.map +1 -0
  12. package/dist/components/layout/stack.d.ts +6 -0
  13. package/dist/components/layout/stack.d.ts.map +1 -0
  14. package/dist/components/marketing/footer.d.ts +40 -0
  15. package/dist/components/marketing/footer.d.ts.map +1 -0
  16. package/dist/components/marketing/index.d.ts +6 -0
  17. package/dist/components/marketing/index.d.ts.map +1 -0
  18. package/dist/components/marketing/navigation.d.ts +24 -0
  19. package/dist/components/marketing/navigation.d.ts.map +1 -0
  20. package/dist/components/marketing/page.d.ts +13 -0
  21. package/dist/components/marketing/page.d.ts.map +1 -0
  22. package/dist/components/marketing/section.d.ts +13 -0
  23. package/dist/components/marketing/section.d.ts.map +1 -0
  24. package/dist/components/marketing/text.d.ts +12 -0
  25. package/dist/components/marketing/text.d.ts.map +1 -0
  26. package/dist/components/mixin/alignMixin.d.ts +15 -0
  27. package/dist/components/mixin/alignMixin.d.ts.map +1 -0
  28. package/dist/components/mixin/gapMixin.d.ts +22 -0
  29. package/dist/components/mixin/gapMixin.d.ts.map +1 -0
  30. package/dist/components/mixin/heightMixin.d.ts +22 -0
  31. package/dist/components/mixin/heightMixin.d.ts.map +1 -0
  32. package/dist/components/mixin/index.d.ts +9 -0
  33. package/dist/components/mixin/index.d.ts.map +1 -0
  34. package/dist/components/mixin/paddingMixin.d.ts +99 -0
  35. package/dist/components/mixin/paddingMixin.d.ts.map +1 -0
  36. package/dist/components/mixin/panelMixin.d.ts +48 -0
  37. package/dist/components/mixin/panelMixin.d.ts.map +1 -0
  38. package/dist/components/mixin/styleMixin.d.ts +9 -0
  39. package/dist/components/mixin/styleMixin.d.ts.map +1 -0
  40. package/dist/components/mixin/textMixin.d.ts +66 -0
  41. package/dist/components/mixin/textMixin.d.ts.map +1 -0
  42. package/dist/components/mixin/widthMixin.d.ts +26 -0
  43. package/dist/components/mixin/widthMixin.d.ts.map +1 -0
  44. package/dist/components/ui/avatar.d.ts +9 -0
  45. package/dist/components/ui/avatar.d.ts.map +1 -0
  46. package/dist/components/ui/button.d.ts +29 -0
  47. package/dist/components/ui/button.d.ts.map +1 -0
  48. package/dist/components/ui/card.d.ts +10 -0
  49. package/dist/components/ui/card.d.ts.map +1 -0
  50. package/dist/components/ui/carousel.d.ts +17 -0
  51. package/dist/components/ui/carousel.d.ts.map +1 -0
  52. package/dist/components/ui/image.d.ts +24 -0
  53. package/dist/components/ui/image.d.ts.map +1 -0
  54. package/dist/components/ui/index.d.ts +6 -0
  55. package/dist/components/ui/index.d.ts.map +1 -0
  56. package/dist/components.css +1867 -0
  57. package/dist/components.d.ts +2 -0
  58. package/dist/components.d.ts.map +1 -0
  59. package/dist/components.jsx +1051 -0
  60. package/dist/media.css +39 -0
  61. package/dist/reset.css +40 -0
  62. package/dist/reset.d.ts +2 -0
  63. package/dist/reset.d.ts.map +1 -0
  64. package/dist/reset.js +1 -0
  65. package/dist/src/components/index.d.ts +4 -0
  66. package/dist/src/components/index.d.ts.map +1 -0
  67. package/dist/src/components/layout/cluster.d.ts +6 -0
  68. package/dist/src/components/layout/cluster.d.ts.map +1 -0
  69. package/dist/src/components/layout/container.d.ts +6 -0
  70. package/dist/src/components/layout/container.d.ts.map +1 -0
  71. package/dist/src/components/layout/dual.d.ts +14 -0
  72. package/dist/src/components/layout/dual.d.ts.map +1 -0
  73. package/dist/src/components/layout/index.d.ts +5 -0
  74. package/dist/src/components/layout/index.d.ts.map +1 -0
  75. package/dist/src/components/layout/stack.d.ts +6 -0
  76. package/dist/src/components/layout/stack.d.ts.map +1 -0
  77. package/dist/src/components/marketing/footer.d.ts +40 -0
  78. package/dist/src/components/marketing/footer.d.ts.map +1 -0
  79. package/dist/src/components/marketing/index.d.ts +6 -0
  80. package/dist/src/components/marketing/index.d.ts.map +1 -0
  81. package/dist/src/components/marketing/navigation.d.ts +24 -0
  82. package/dist/src/components/marketing/navigation.d.ts.map +1 -0
  83. package/dist/src/components/marketing/page.d.ts +13 -0
  84. package/dist/src/components/marketing/page.d.ts.map +1 -0
  85. package/dist/src/components/marketing/section.d.ts +13 -0
  86. package/dist/src/components/marketing/section.d.ts.map +1 -0
  87. package/dist/src/components/marketing/text.d.ts +12 -0
  88. package/dist/src/components/marketing/text.d.ts.map +1 -0
  89. package/dist/src/components/mixin/alignMixin.d.ts +15 -0
  90. package/dist/src/components/mixin/alignMixin.d.ts.map +1 -0
  91. package/dist/src/components/mixin/gapMixin.d.ts +22 -0
  92. package/dist/src/components/mixin/gapMixin.d.ts.map +1 -0
  93. package/dist/src/components/mixin/heightMixin.d.ts +22 -0
  94. package/dist/src/components/mixin/heightMixin.d.ts.map +1 -0
  95. package/dist/src/components/mixin/index.d.ts +9 -0
  96. package/dist/src/components/mixin/index.d.ts.map +1 -0
  97. package/dist/src/components/mixin/paddingMixin.d.ts +99 -0
  98. package/dist/src/components/mixin/paddingMixin.d.ts.map +1 -0
  99. package/dist/src/components/mixin/panelMixin.d.ts +48 -0
  100. package/dist/src/components/mixin/panelMixin.d.ts.map +1 -0
  101. package/dist/src/components/mixin/styleMixin.d.ts +9 -0
  102. package/dist/src/components/mixin/styleMixin.d.ts.map +1 -0
  103. package/dist/src/components/mixin/textMixin.d.ts +66 -0
  104. package/dist/src/components/mixin/textMixin.d.ts.map +1 -0
  105. package/dist/src/components/mixin/widthMixin.d.ts +26 -0
  106. package/dist/src/components/mixin/widthMixin.d.ts.map +1 -0
  107. package/dist/src/components/ui/avatar.d.ts +9 -0
  108. package/dist/src/components/ui/avatar.d.ts.map +1 -0
  109. package/dist/src/components/ui/button.d.ts +29 -0
  110. package/dist/src/components/ui/button.d.ts.map +1 -0
  111. package/dist/src/components/ui/card.d.ts +10 -0
  112. package/dist/src/components/ui/card.d.ts.map +1 -0
  113. package/dist/src/components/ui/carousel.d.ts +17 -0
  114. package/dist/src/components/ui/carousel.d.ts.map +1 -0
  115. package/dist/src/components/ui/image.d.ts +24 -0
  116. package/dist/src/components/ui/image.d.ts.map +1 -0
  117. package/dist/src/components/ui/index.d.ts +6 -0
  118. package/dist/src/components/ui/index.d.ts.map +1 -0
  119. package/dist/src/components.d.ts +2 -0
  120. package/dist/src/components.d.ts.map +1 -0
  121. package/dist/src/reset.d.ts +2 -0
  122. package/dist/src/reset.d.ts.map +1 -0
  123. package/dist/src/theme.d.ts +2 -0
  124. package/dist/src/theme.d.ts.map +1 -0
  125. package/dist/src/tokens.d.ts +2 -0
  126. package/dist/src/tokens.d.ts.map +1 -0
  127. package/dist/test/app.d.ts +2 -0
  128. package/dist/test/app.d.ts.map +1 -0
  129. package/dist/test/main.d.ts +5 -0
  130. package/dist/test/main.d.ts.map +1 -0
  131. package/dist/test/pages/examples/home.d.ts +2 -0
  132. package/dist/test/pages/examples/home.d.ts.map +1 -0
  133. package/dist/test/pages/examples/pageBlocks.d.ts +2 -0
  134. package/dist/test/pages/examples/pageBlocks.d.ts.map +1 -0
  135. package/dist/test/pages/examples/pageButtons.d.ts +2 -0
  136. package/dist/test/pages/examples/pageButtons.d.ts.map +1 -0
  137. package/dist/test/pages/examples/pageCards.d.ts +2 -0
  138. package/dist/test/pages/examples/pageCards.d.ts.map +1 -0
  139. package/dist/test/pages/examples/pageCarousel.d.ts +2 -0
  140. package/dist/test/pages/examples/pageCarousel.d.ts.map +1 -0
  141. package/dist/test/pages/examples/pageContainers.d.ts +2 -0
  142. package/dist/test/pages/examples/pageContainers.d.ts.map +1 -0
  143. package/dist/test/pages/examples/pageLists.d.ts +2 -0
  144. package/dist/test/pages/examples/pageLists.d.ts.map +1 -0
  145. package/dist/test/pages/examples/pagePalette.d.ts +2 -0
  146. package/dist/test/pages/examples/pagePalette.d.ts.map +1 -0
  147. package/dist/test/pages/examples/pageSections.d.ts +2 -0
  148. package/dist/test/pages/examples/pageSections.d.ts.map +1 -0
  149. package/dist/test/pages/examples/pageSplits.d.ts +2 -0
  150. package/dist/test/pages/examples/pageSplits.d.ts.map +1 -0
  151. package/dist/test/pages/examples/pageText.d.ts +2 -0
  152. package/dist/test/pages/examples/pageText.d.ts.map +1 -0
  153. package/dist/test/pages/examples/palettePreview.d.ts +4 -0
  154. package/dist/test/pages/examples/palettePreview.d.ts.map +1 -0
  155. package/dist/test/pages/examples/paletteSwatches.d.ts +11 -0
  156. package/dist/test/pages/examples/paletteSwatches.d.ts.map +1 -0
  157. package/dist/test/pages/pageFooter.d.ts +2 -0
  158. package/dist/test/pages/pageFooter.d.ts.map +1 -0
  159. package/dist/test/pages/pageHeader.d.ts +2 -0
  160. package/dist/test/pages/pageHeader.d.ts.map +1 -0
  161. package/dist/test/pages/pageLayout.d.ts +3 -0
  162. package/dist/test/pages/pageLayout.d.ts.map +1 -0
  163. package/dist/test/vite.config.dev.d.ts +3 -0
  164. package/dist/test/vite.config.dev.d.ts.map +1 -0
  165. package/dist/test/vite.config.preview.d.ts +3 -0
  166. package/dist/test/vite.config.preview.d.ts.map +1 -0
  167. package/dist/theme.css +175 -0
  168. package/dist/theme.d.ts +2 -0
  169. package/dist/theme.d.ts.map +1 -0
  170. package/dist/theme.js +1 -0
  171. package/dist/tokens.css +1256 -0
  172. package/dist/tokens.d.ts +2 -0
  173. package/dist/tokens.d.ts.map +1 -0
  174. package/dist/tokens.js +1 -0
  175. package/package.json +63 -0
@@ -0,0 +1,1051 @@
1
+ import { Mail, Phone, MapPin, Menu, X, ChevronLeft, ChevronRight } from 'lucide-solid';
2
+ import { Show, For, splitProps, Match, Switch, createSignal, onMount } from 'solid-js';
3
+ import { Dialog } from '@kobalte/core/dialog';
4
+ import { A } from '@solidjs/router';
5
+ import * as ButtonPrimitive from '@kobalte/core/button';
6
+ import AutoPlay from 'embla-carousel-autoplay';
7
+ import createEmblaCarousel from 'embla-carousel-solid';
8
+
9
+ var AlignMixin;
10
+ (function (AlignMixin) {
11
+ /* CSS CLASSES */
12
+ const ALIGN = "align";
13
+ const MIXIN = "mixin";
14
+ const ALIGN_MIXIN = `${ALIGN}-${MIXIN}`;
15
+ const ALIGNS = {
16
+ start: `${ALIGN}-start`,
17
+ center: `${ALIGN}-center`,
18
+ end: `${ALIGN}-end`,
19
+ stretch: `${ALIGN}-stretch`,
20
+ };
21
+ /* CLASS GENERATOR */
22
+ function classes(props) {
23
+ const classes = [ALIGN_MIXIN];
24
+ if (props.align)
25
+ classes.push(ALIGNS[props.align]);
26
+ return classes.join(" ");
27
+ }
28
+ AlignMixin.classes = classes;
29
+ })(AlignMixin || (AlignMixin = {}));
30
+
31
+ var GapMixin;
32
+ (function (GapMixin) {
33
+ /* CSS CLASSES */
34
+ const GAP = "gap";
35
+ const MIXIN = "mixin";
36
+ const GAP_MIXIN = `${GAP}-${MIXIN}`;
37
+ const GAPS = {
38
+ none: `${GAP}-none`,
39
+ "3xsmall": `${GAP}-3xsmall`,
40
+ "2xsmall": `${GAP}-2xsmall`,
41
+ xsmall: `${GAP}-xsmall`,
42
+ small: `${GAP}-small`,
43
+ medium: `${GAP}-medium`,
44
+ large: `${GAP}-large`,
45
+ xlarge: `${GAP}-xlarge`,
46
+ "2xlarge": `${GAP}-2xlarge`,
47
+ "3xlarge": `${GAP}-3xlarge`,
48
+ "4xlarge": `${GAP}-4xlarge`,
49
+ };
50
+ /* CLASS GENERATOR */
51
+ function classes(props) {
52
+ const classes = [GAP_MIXIN];
53
+ if (props.gap)
54
+ classes.push(GAPS[props.gap]);
55
+ return classes.join(" ");
56
+ }
57
+ GapMixin.classes = classes;
58
+ })(GapMixin || (GapMixin = {}));
59
+
60
+ var HeightMixin;
61
+ (function (HeightMixin) {
62
+ /* CSS CLASSES */
63
+ const HEIGHT = "height";
64
+ const MIN_HEIGHT = "min-height";
65
+ const MIXIN = "mixin";
66
+ const HEIGHT_MIXIN = `${HEIGHT}-${MIXIN}`;
67
+ const HEIGHTS = {
68
+ full: `${HEIGHT}-full`,
69
+ large: `${HEIGHT}-large`,
70
+ medium: `${HEIGHT}-medium`,
71
+ small: `${HEIGHT}-small`,
72
+ };
73
+ const MIN_HEIGHTS = {
74
+ full: `${MIN_HEIGHT}-full`,
75
+ large: `${MIN_HEIGHT}-large`,
76
+ medium: `${MIN_HEIGHT}-medium`,
77
+ small: `${MIN_HEIGHT}-small`,
78
+ };
79
+ /* CLASS GENERATOR */
80
+ function classes(props) {
81
+ const classes = [HEIGHT_MIXIN];
82
+ if (props.height)
83
+ classes.push(HEIGHTS[props.height]);
84
+ if (props.minHeight)
85
+ classes.push(MIN_HEIGHTS[props.minHeight]);
86
+ return classes.join(" ");
87
+ }
88
+ HeightMixin.classes = classes;
89
+ })(HeightMixin || (HeightMixin = {}));
90
+
91
+ var PaddingMixin;
92
+ (function (PaddingMixin) {
93
+ /* CSS CLASSES */
94
+ const PADDING = "padding";
95
+ const PADDING_BLOCK = "padding-block";
96
+ const PADDING_INLINE = "padding-inline";
97
+ const PADDING_TOP = "padding-top";
98
+ const PADDING_RIGHT = "padding-right";
99
+ const PADDING_BOTTOM = "padding-bottom";
100
+ const PADDING_LEFT = "padding-left";
101
+ const PADDINGS = {
102
+ "3xsmall": `${PADDING}-3xsmall`,
103
+ "2xsmall": `${PADDING}-2xsmall`,
104
+ xsmall: `${PADDING}-xsmall`,
105
+ small: `${PADDING}-small`,
106
+ medium: `${PADDING}-medium`,
107
+ large: `${PADDING}-large`,
108
+ xlarge: `${PADDING}-xlarge`,
109
+ "2xlarge": `${PADDING}-2xlarge`,
110
+ "3xlarge": `${PADDING}-3xlarge`,
111
+ "4xlarge": `${PADDING}-4xlarge`,
112
+ };
113
+ const PADDING_BLOCKS = {
114
+ "3xsmall": `${PADDING_BLOCK}-3xsmall`,
115
+ "2xsmall": `${PADDING_BLOCK}-2xsmall`,
116
+ xsmall: `${PADDING_BLOCK}-xsmall`,
117
+ small: `${PADDING_BLOCK}-small`,
118
+ medium: `${PADDING_BLOCK}-medium`,
119
+ large: `${PADDING_BLOCK}-large`,
120
+ xlarge: `${PADDING_BLOCK}-xlarge`,
121
+ "2xlarge": `${PADDING_BLOCK}-2xlarge`,
122
+ "3xlarge": `${PADDING_BLOCK}-3xlarge`,
123
+ "4xlarge": `${PADDING_BLOCK}-4xlarge`,
124
+ };
125
+ const PADDING_INLINES = {
126
+ "3xsmall": `${PADDING_INLINE}-3xsmall`,
127
+ "2xsmall": `${PADDING_INLINE}-2xsmall`,
128
+ xsmall: `${PADDING_INLINE}-xsmall`,
129
+ small: `${PADDING_INLINE}-small`,
130
+ medium: `${PADDING_INLINE}-medium`,
131
+ large: `${PADDING_INLINE}-large`,
132
+ xlarge: `${PADDING_INLINE}-xlarge`,
133
+ "2xlarge": `${PADDING_INLINE}-2xlarge`,
134
+ "3xlarge": `${PADDING_INLINE}-3xlarge`,
135
+ "4xlarge": `${PADDING_INLINE}-4xlarge`,
136
+ };
137
+ const PADDING_TOPS = {
138
+ "3xsmall": `${PADDING_TOP}-3xsmall`,
139
+ "2xsmall": `${PADDING_TOP}-2xsmall`,
140
+ xsmall: `${PADDING_TOP}-xsmall`,
141
+ small: `${PADDING_TOP}-small`,
142
+ medium: `${PADDING_TOP}-medium`,
143
+ large: `${PADDING_TOP}-large`,
144
+ xlarge: `${PADDING_TOP}-xlarge`,
145
+ "2xlarge": `${PADDING_TOP}-2xlarge`,
146
+ "3xlarge": `${PADDING_TOP}-3xlarge`,
147
+ "4xlarge": `${PADDING_TOP}-4xlarge`,
148
+ };
149
+ const PADDING_BOTTOMS = {
150
+ "3xsmall": `${PADDING_BOTTOM}-3xsmall`,
151
+ "2xsmall": `${PADDING_BOTTOM}-2xsmall`,
152
+ xsmall: `${PADDING_BOTTOM}-xsmall`,
153
+ small: `${PADDING_BOTTOM}-small`,
154
+ medium: `${PADDING_BOTTOM}-medium`,
155
+ large: `${PADDING_BOTTOM}-large`,
156
+ xlarge: `${PADDING_BOTTOM}-xlarge`,
157
+ "2xlarge": `${PADDING_BOTTOM}-2xlarge`,
158
+ "3xlarge": `${PADDING_BOTTOM}-3xlarge`,
159
+ "4xlarge": `${PADDING_BOTTOM}-4xlarge`,
160
+ };
161
+ const PADDING_LEFTS = {
162
+ "3xsmall": `${PADDING_LEFT}-3xsmall`,
163
+ "2xsmall": `${PADDING_LEFT}-2xsmall`,
164
+ xsmall: `${PADDING_LEFT}-xsmall`,
165
+ small: `${PADDING_LEFT}-small`,
166
+ medium: `${PADDING_LEFT}-medium`,
167
+ large: `${PADDING_LEFT}-large`,
168
+ xlarge: `${PADDING_LEFT}-xlarge`,
169
+ "2xlarge": `${PADDING_LEFT}-2xlarge`,
170
+ "3xlarge": `${PADDING_LEFT}-3xlarge`,
171
+ "4xlarge": `${PADDING_LEFT}-4xlarge`,
172
+ };
173
+ const PADDING_RIGHTS = {
174
+ "3xsmall": `${PADDING_RIGHT}-3xsmall`,
175
+ "2xsmall": `${PADDING_RIGHT}-2xsmall`,
176
+ xsmall: `${PADDING_RIGHT}-xsmall`,
177
+ small: `${PADDING_RIGHT}-small`,
178
+ medium: `${PADDING_RIGHT}-medium`,
179
+ large: `${PADDING_RIGHT}-large`,
180
+ xlarge: `${PADDING_RIGHT}-xlarge`,
181
+ "2xlarge": `${PADDING_RIGHT}-2xlarge`,
182
+ "3xlarge": `${PADDING_RIGHT}-3xlarge`,
183
+ "4xlarge": `${PADDING_RIGHT}-4xlarge`,
184
+ };
185
+ /* CLASS GENERATOR */
186
+ function classes(props) {
187
+ const paddings = [];
188
+ if (props.padding)
189
+ paddings.push(PADDINGS[props.padding]);
190
+ if (props.paddingBlock)
191
+ paddings.push(PADDING_BLOCKS[props.paddingBlock]);
192
+ if (props.paddingInline)
193
+ paddings.push(PADDING_INLINES[props.paddingInline]);
194
+ if (props.paddingTop)
195
+ paddings.push(PADDING_TOPS[props.paddingTop]);
196
+ if (props.paddingBottom)
197
+ paddings.push(PADDING_BOTTOMS[props.paddingBottom]);
198
+ if (props.paddingLeft)
199
+ paddings.push(PADDING_LEFTS[props.paddingLeft]);
200
+ if (props.paddingRight)
201
+ paddings.push(PADDING_RIGHTS[props.paddingRight]);
202
+ return paddings.join(" ");
203
+ }
204
+ PaddingMixin.classes = classes;
205
+ })(PaddingMixin || (PaddingMixin = {}));
206
+
207
+ var PanelMixin;
208
+ (function (PanelMixin) {
209
+ /* CSS CLASSES */
210
+ const PANEL = "panel";
211
+ const COLOR = "color";
212
+ const INTENSITY = "intensity";
213
+ const BORDER = "border";
214
+ const RADIUS = "radius";
215
+ const COLORS = {
216
+ neutral: `${PANEL}-${COLOR}-neutral`,
217
+ brand: `${PANEL}-${COLOR}-brand`,
218
+ accent: `${PANEL}-${COLOR}-accent`,
219
+ danger: `${PANEL}-${COLOR}-danger`,
220
+ };
221
+ const INTENSITIES = {
222
+ transparent: `${PANEL}-${INTENSITY}-transparent`,
223
+ clear: `${PANEL}-${INTENSITY}-clear`,
224
+ subtle: `${PANEL}-${INTENSITY}-subtle`,
225
+ soft: `${PANEL}-${INTENSITY}-soft`,
226
+ muted: `${PANEL}-${INTENSITY}-muted`,
227
+ base: `${PANEL}-${INTENSITY}-base`,
228
+ strong: `${PANEL}-${INTENSITY}-strong`,
229
+ deep: `${PANEL}-${INTENSITY}-deep`,
230
+ };
231
+ const BORDERS = {
232
+ all: `${PANEL}-${BORDER}-all`,
233
+ block: `${PANEL}-${BORDER}-block`,
234
+ inline: `${PANEL}-${BORDER}-inline`,
235
+ top: `${PANEL}-${BORDER}-top`,
236
+ bottom: `${PANEL}-${BORDER}-bottom`,
237
+ left: `${PANEL}-${BORDER}-left`,
238
+ right: `${PANEL}-${BORDER}-right`,
239
+ };
240
+ const RADII = {
241
+ all: `${PANEL}-${RADIUS}-all`,
242
+ top: `${PANEL}-${RADIUS}-top`,
243
+ bottom: `${PANEL}-${RADIUS}-bottom`,
244
+ left: `${PANEL}-${RADIUS}-left`,
245
+ right: `${PANEL}-${RADIUS}-right`,
246
+ topLeft: `${PANEL}-${RADIUS}-top-left`,
247
+ topRight: `${PANEL}-${RADIUS}-top-right`,
248
+ bottomLeft: `${PANEL}-${RADIUS}-bottom-left`,
249
+ bottomRight: `${PANEL}-${RADIUS}-bottom-right`,
250
+ };
251
+ /* CLASS GENERATOR */
252
+ function color(color) {
253
+ return COLORS[color ?? "neutral"];
254
+ }
255
+ function intensity(intensity) {
256
+ return INTENSITIES[intensity ?? "transparent"];
257
+ }
258
+ function borders(border) {
259
+ const borders = border !== undefined ? (Array.isArray(border) ? border : [border]) : [];
260
+ return borders.map((border) => BORDERS[border]).join(" ");
261
+ }
262
+ function radii(radius) {
263
+ const radii = radius !== undefined ? (Array.isArray(radius) ? radius : [radius]) : [];
264
+ return radii.map((radius) => RADII[radius]).join(" ");
265
+ }
266
+ function classes(props) {
267
+ return `${PANEL} ${color(props.panelColor)} ${intensity(props.panelIntensity)} ${borders(props.panelBorder)} ${radii(props.panelRadius)}`;
268
+ }
269
+ PanelMixin.classes = classes;
270
+ })(PanelMixin || (PanelMixin = {}));
271
+
272
+ var StyleMixin;
273
+ (function (StyleMixin) {
274
+ /* PROPS */
275
+ /* CLASS GENERATOR */
276
+ function classes(props) {
277
+ return `${props.class ?? ""}`;
278
+ }
279
+ StyleMixin.classes = classes;
280
+ })(StyleMixin || (StyleMixin = {}));
281
+
282
+ var TextMixin;
283
+ (function (TextMixin) {
284
+ /* CSS CLASSES */
285
+ const TEXT = "text";
286
+ const ALIGN = "align";
287
+ const COLOR = "color";
288
+ const INTENSITY = "intensity";
289
+ const FAMILY = "family";
290
+ const WEIGHT = "weight";
291
+ const SIZE = "size";
292
+ const LINE = "line";
293
+ const MIXIN = "mixin";
294
+ const TEXT_MIXIN = `${TEXT}-${MIXIN}`;
295
+ const COLORS = {
296
+ neutral: `${TEXT}-${COLOR}-neutral`,
297
+ brand: `${TEXT}-${COLOR}-brand`,
298
+ accent: `${TEXT}-${COLOR}-accent`,
299
+ danger: `${TEXT}-${COLOR}-danger`,
300
+ };
301
+ const INTENSITIES = {
302
+ subtle: `${TEXT}-${INTENSITY}-subtle`,
303
+ soft: `${TEXT}-${INTENSITY}-soft`,
304
+ muted: `${TEXT}-${INTENSITY}-muted`,
305
+ base: `${TEXT}-${INTENSITY}-base`,
306
+ strong: `${TEXT}-${INTENSITY}-strong`,
307
+ deep: `${TEXT}-${INTENSITY}-deep`,
308
+ inverted: `${TEXT}-${INTENSITY}-inverted`,
309
+ };
310
+ const ALIGNS = {
311
+ left: `${TEXT}-${ALIGN}-left`,
312
+ center: `${TEXT}-${ALIGN}-center`,
313
+ right: `${TEXT}-${ALIGN}-right`,
314
+ stretch: `${TEXT}-${ALIGN}-stretch`,
315
+ };
316
+ const FAMILIES = {
317
+ body: `${TEXT}-${FAMILY}-body`,
318
+ heading: `${TEXT}-${FAMILY}-heading`,
319
+ code: `${TEXT}-${FAMILY}-code`,
320
+ longform: `${TEXT}-${FAMILY}-longform`,
321
+ tagline: `${TEXT}-${FAMILY}-tagline`,
322
+ action: `${TEXT}-${FAMILY}-action`,
323
+ };
324
+ const WEIGHTS = {
325
+ light: `${TEXT}-${WEIGHT}-light`,
326
+ normal: `${TEXT}-${WEIGHT}-normal`,
327
+ semibold: `${TEXT}-${WEIGHT}-semibold`,
328
+ bold: `${TEXT}-${WEIGHT}-bold`,
329
+ };
330
+ const SIZES = {
331
+ "2xsmall": `${TEXT}-${SIZE}-2xs`,
332
+ xsmall: `${TEXT}-${SIZE}-xs`,
333
+ small: `${TEXT}-${SIZE}-s`,
334
+ medium: `${TEXT}-${SIZE}-m`,
335
+ large: `${TEXT}-${SIZE}-l`,
336
+ xlarge: `${TEXT}-${SIZE}-xl`,
337
+ "2xlarge": `${TEXT}-${SIZE}-2xl`,
338
+ "3xlarge": `${TEXT}-${SIZE}-3xl`,
339
+ "4xlarge": `${TEXT}-${SIZE}-4xl`,
340
+ };
341
+ const LINES = {
342
+ condensed: `${TEXT}-${LINE}-condensed`,
343
+ normal: `${TEXT}-${LINE}-normal`,
344
+ expanded: `${TEXT}-${LINE}-expanded`,
345
+ };
346
+ /* CLASS GENERATOR */
347
+ function classes(props) {
348
+ const classes = [TEXT_MIXIN];
349
+ if (props.textColor)
350
+ classes.push(COLORS[props.textColor]);
351
+ if (props.textIntensity)
352
+ classes.push(INTENSITIES[props.textIntensity]);
353
+ if (props.textAlign)
354
+ classes.push(ALIGNS[props.textAlign]);
355
+ if (props.textFamily)
356
+ classes.push(FAMILIES[props.textFamily]);
357
+ if (props.textWeight)
358
+ classes.push(WEIGHTS[props.textWeight]);
359
+ if (props.textSize)
360
+ classes.push(SIZES[props.textSize]);
361
+ if (props.textLine)
362
+ classes.push(LINES[props.textLine]);
363
+ return classes.join(" ");
364
+ }
365
+ TextMixin.classes = classes;
366
+ })(TextMixin || (TextMixin = {}));
367
+
368
+ var WidthMixin;
369
+ (function (WidthMixin) {
370
+ /* CSS CLASSES */
371
+ const WIDTH = "width";
372
+ const MAX_WIDTH = "max-width";
373
+ const MIXIN = "mixin";
374
+ const WIDTH_MIXIN = `${WIDTH}-${MIXIN}`;
375
+ const WIDTHS = {
376
+ xsmall: `${WIDTH}-xsmall`,
377
+ small: `${WIDTH}-small`,
378
+ medium: `${WIDTH}-medium`,
379
+ large: `${WIDTH}-large`,
380
+ xlarge: `${WIDTH}-xlarge`,
381
+ "2xlarge": `${WIDTH}-2xlarge`,
382
+ };
383
+ const MAX_WIDTHS = {
384
+ xsmall: `${MAX_WIDTH}-xsmall`,
385
+ small: `${MAX_WIDTH}-small`,
386
+ medium: `${MAX_WIDTH}-medium`,
387
+ large: `${MAX_WIDTH}-large`,
388
+ xlarge: `${MAX_WIDTH}-xlarge`,
389
+ "2xlarge": `${MAX_WIDTH}-2xlarge`,
390
+ };
391
+ /* CLASS GENERATOR */
392
+ function classes(props) {
393
+ const classes = [WIDTH_MIXIN];
394
+ if (props.width)
395
+ classes.push(WIDTHS[props.width]);
396
+ if (props.maxWidth)
397
+ classes.push(MAX_WIDTHS[props.maxWidth]);
398
+ return classes.join(" ");
399
+ }
400
+ WidthMixin.classes = classes;
401
+ })(WidthMixin || (WidthMixin = {}));
402
+
403
+ /* CSS CLASSES */
404
+ const CLUSTER = "cluster";
405
+ /* CLASS GENERATOR */
406
+ /* LIST */
407
+ const Cluster = (props) => {
408
+ const mixins = () => [
409
+ PanelMixin.classes(props),
410
+ WidthMixin.classes(props),
411
+ HeightMixin.classes(props),
412
+ PaddingMixin.classes(props),
413
+ GapMixin.classes(props),
414
+ TextMixin.classes(props),
415
+ AlignMixin.classes(props),
416
+ StyleMixin.classes(props),
417
+ ].join(" ");
418
+ return (<div class={`${CLUSTER} ${mixins()}`} style={props.style}>
419
+ {props.children}
420
+ </div>);
421
+ };
422
+
423
+ /* CSS CLASSES */
424
+ const CONTAINER = "container";
425
+ /* CONTAINER */
426
+ const Container = (props) => {
427
+ const mixins = () => [
428
+ PanelMixin.classes(props),
429
+ PaddingMixin.classes(props),
430
+ WidthMixin.classes(props),
431
+ HeightMixin.classes(props),
432
+ TextMixin.classes(props),
433
+ StyleMixin.classes(props),
434
+ ].join(" ");
435
+ return (<div class={`${CONTAINER} ${mixins()}`} style={props.style}>
436
+ {props.children}
437
+ </div>);
438
+ };
439
+
440
+ /* CLASSES */
441
+ const DUAL = "dual";
442
+ const SPLIT = "split";
443
+ const SPLITS = {
444
+ left: `${DUAL}-${SPLIT}-left`,
445
+ middle: `${DUAL}-${SPLIT}-middle`,
446
+ right: `${DUAL}-${SPLIT}-right`,
447
+ };
448
+ /* COMPONENT */
449
+ const Dual = (props) => {
450
+ const mixins = () => [
451
+ PanelMixin.classes(props),
452
+ PaddingMixin.classes(props),
453
+ GapMixin.classes(props),
454
+ WidthMixin.classes(props),
455
+ HeightMixin.classes(props),
456
+ AlignMixin.classes(props),
457
+ TextMixin.classes(props),
458
+ StyleMixin.classes(props),
459
+ ].join(" ");
460
+ return (<div class={`${DUAL} ${SPLITS[props.split]} ${mixins()}`} style={props.style}>
461
+ {props.children}
462
+ </div>);
463
+ };
464
+
465
+ /* CSS CLASSES */
466
+ const STACK = "stack";
467
+ /* STACK */
468
+ const Stack = (props) => {
469
+ const mixins = () => [
470
+ PanelMixin.classes(props),
471
+ PaddingMixin.classes(props),
472
+ GapMixin.classes(props),
473
+ WidthMixin.classes(props),
474
+ HeightMixin.classes(props),
475
+ AlignMixin.classes(props),
476
+ TextMixin.classes(props),
477
+ StyleMixin.classes(props),
478
+ ].join(" ");
479
+ return (<div class={`${STACK} ${mixins()}`} style={props.style}>
480
+ {props.children}
481
+ </div>);
482
+ };
483
+
484
+ /* CSS CLASSES */
485
+ const SCOPE$3 = "footer";
486
+ const PARTS$7 = {
487
+ blocks: "blocks",
488
+ contact: "contact",
489
+ networks: "networks",
490
+ legal: "legal",
491
+ map: "map",
492
+ copyright: "copyright",
493
+ title: "title",
494
+ description: "description",
495
+ items: "items",
496
+ };
497
+ const Footer = (props) => {
498
+ return (<footer class={`${SCOPE$3} ${props.class ?? ""}`} style={props.style}>
499
+ <Container panelColor={props.panelColor} panelIntensity={props.panelIntensity} padding="xlarge" panelBorder="bottom">
500
+ <div class={`${SCOPE$3}-${PARTS$7.blocks}`}>
501
+ <Show when={props.map}>
502
+ {(map) => (<div class={`${SCOPE$3}-${PARTS$7.map}`}>
503
+ <h2 class={`${SCOPE$3}-${PARTS$7.title}`}>{map().title}</h2>
504
+ <iframe src={map().url} title={map().title} allowfullscreen={true} loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe>
505
+ </div>)}
506
+ </Show>
507
+
508
+ <div class={`${SCOPE$3}-${PARTS$7.contact}`}>
509
+ <h2 class={`${SCOPE$3}-${PARTS$7.title}`}>{props.contact.title}</h2>
510
+ <p class={`${SCOPE$3}-${PARTS$7.description}`}>{props.contact.description}</p>
511
+ <div>
512
+ <Show when={props.contact.email}>
513
+ {(email) => (<>
514
+ <Mail />
515
+ <p>{email()}</p>
516
+ </>)}
517
+ </Show>
518
+
519
+ <Show when={props.contact.phone}>
520
+ {(phone) => (<>
521
+ <Phone />
522
+ <p>{phone()}</p>
523
+ </>)}
524
+ </Show>
525
+
526
+ <Show when={props.contact.address}>
527
+ {(address) => (<>
528
+ <MapPin />
529
+ <p>{address()}</p>
530
+ </>)}
531
+ </Show>
532
+ </div>
533
+ </div>
534
+
535
+ <Show when={props.networks}>
536
+ {(networks) => (<div class={`${SCOPE$3}-${PARTS$7.networks}`}>
537
+ <h2 class={`${SCOPE$3}-${PARTS$7.title}`}>{networks().title}</h2>
538
+ <div class={`${SCOPE$3}-${PARTS$7.items}`}>
539
+ <For each={networks().items}>{(item) => <a href={item.url}>{item.name}</a>}</For>
540
+ </div>
541
+ </div>)}
542
+ </Show>
543
+
544
+ <div class={`${SCOPE$3}-${PARTS$7.legal}`}>
545
+ <h2 class={`${SCOPE$3}-${PARTS$7.title}`}>{props.legal.title}</h2>
546
+ <div class={`${SCOPE$3}-${PARTS$7.items}`}>
547
+ <For each={props.legal.items}>{(item) => <a href={item.url}>{item.name}</a>}</For>
548
+ </div>
549
+ </div>
550
+ </div>
551
+ </Container>
552
+ <Container padding="large" panelColor={props.panelColor} panelIntensity={props.panelIntensity}>
553
+ <Stack align="center" maxWidth="large">
554
+ <p class={`${SCOPE$3}-${PARTS$7.copyright}`}>{props.copyright}</p>
555
+ </Stack>
556
+ </Container>
557
+ </footer>);
558
+ };
559
+
560
+ /* CSS CLASSES */
561
+ const BUTTON = "button";
562
+ const VARIANT = "variant";
563
+ const COLOR = "color";
564
+ const SIZE = "size";
565
+ const VARIANTS$1 = {
566
+ default: `${BUTTON}-${VARIANT}-default`,
567
+ solid: `${BUTTON}-${VARIANT}-solid`,
568
+ outline: `${BUTTON}-${VARIANT}-outline`,
569
+ ghost: `${BUTTON}-${VARIANT}-ghost`,
570
+ };
571
+ const COLORS = {
572
+ brand: `${BUTTON}-${COLOR}-brand`,
573
+ accent: `${BUTTON}-${COLOR}-accent`,
574
+ neutral: `${BUTTON}-${COLOR}-neutral`,
575
+ danger: `${BUTTON}-${COLOR}-danger`,
576
+ };
577
+ const SIZES = {
578
+ small: `${BUTTON}-${SIZE}-small`,
579
+ medium: `${BUTTON}-${SIZE}-medium`,
580
+ large: `${BUTTON}-${SIZE}-large`,
581
+ };
582
+ function Button(props) {
583
+ const [local, others] = splitProps(props, ["variant", "color", "size"]);
584
+ const color = () => local.color ?? "neutral";
585
+ const variant = () => local.variant ?? "default";
586
+ const size = () => local.size ?? "medium";
587
+ return (<ButtonPrimitive.Root class={`${BUTTON} ${COLORS[color()]} ${VARIANTS$1[variant()]} ${SIZES[size()]}`} {...others}/>);
588
+ }
589
+
590
+ /* CSS CLASSES */
591
+ const SCOPE$2 = "navigation";
592
+ const PARTS$6 = {
593
+ bar: "bar",
594
+ brand: "brand",
595
+ menu: "menu",
596
+ cta: "cta",
597
+ link: "link",
598
+ sheet: "sheet",
599
+ trigger: "trigger",
600
+ overlay: "overlay",
601
+ portal: "portal",
602
+ content: "content",
603
+ header: "header",
604
+ close: "close",
605
+ };
606
+ const STATES = {
607
+ current: "current",
608
+ };
609
+ /* NAVIGATION ROOT */
610
+ const NavigationRoot = (props) => {
611
+ return (<nav class={`${SCOPE$2} ${props.class ?? ""}`} style={props.style}>
612
+ {props.children}
613
+ </nav>);
614
+ };
615
+ /* NAVIGATION BAR */
616
+ const NavigationBar = (props) => {
617
+ return (<div class={`${SCOPE$2}-${PARTS$6.bar} ${props.class ?? ""}`} style={props.style}>
618
+ {props.children}
619
+ </div>);
620
+ };
621
+ /* ---- NAVIGATION BAR BRAND */
622
+ const NavigationBarBrand = (props) => {
623
+ return (<A href="/" style={{ display: "contents" }}>
624
+ <div class={`${SCOPE$2}-${PARTS$6.bar}-${PARTS$6.brand} ${props.class ?? ""}`} style={props.style}>
625
+ {props.children}
626
+ </div>
627
+ </A>);
628
+ };
629
+ /* ---- NAVIGATION BAR MENU */
630
+ const NavigationBarMenu = (props) => {
631
+ return (<div class={`${SCOPE$2}-${PARTS$6.bar}-${PARTS$6.menu} ${props.class ?? ""}`} style={props.style}>
632
+ {props.children}
633
+ </div>);
634
+ };
635
+ const NavigationBarMenuLink = (props) => {
636
+ const [_, anchorProps] = splitProps(props, ["class", "style", "children"]);
637
+ return (<A class={`${SCOPE$2}-${PARTS$6.bar}-${PARTS$6.menu}-${PARTS$6.link} ${props.class ?? ""}`} style={props.style} activeClass={STATES.current} end={true} {...anchorProps}>
638
+ {props.children}
639
+ </A>);
640
+ };
641
+ /* ---- NAVIGATION BAR CTA */
642
+ const NavigationBarCTA = (props) => {
643
+ return (<div class={`${SCOPE$2}-${PARTS$6.bar}-${PARTS$6.cta} ${props.class ?? ""}`} style={props.style}>
644
+ {props.children}
645
+ </div>);
646
+ };
647
+ const NavigationBarCTALink = (props) => {
648
+ const [_, anchorProps] = splitProps(props, ["class", "style", "children", "variant"]);
649
+ return (<A end={true} {...anchorProps}>
650
+ <Button size="small" variant={props.variant === "primary" ? "solid" : "default"} color="neutral">
651
+ {props.children}
652
+ </Button>
653
+ </A>);
654
+ };
655
+ /* NAVIGATION SHEET */
656
+ const NavigationSheet = (props) => {
657
+ return <Dialog {...props}/>;
658
+ };
659
+ /* ---- NAVIGATION SHEET TRIGGER */
660
+ const NavigationSheetTrigger = (props) => {
661
+ const [_, dialogTriggerProps] = splitProps(props, ["class", "style", "children"]);
662
+ return (<Dialog.Trigger class={`${SCOPE$2}-${PARTS$6.sheet}-${PARTS$6.trigger} ${props.class ?? ""}`} style={props.style} {...dialogTriggerProps}>
663
+ {props.children}
664
+ </Dialog.Trigger>);
665
+ };
666
+ /* ---- NAVIGATION SHEET PORTAL */
667
+ const NavigationSheetPortal = (props) => {
668
+ const [_, dialogPortalProps] = splitProps(props, ["class", "style", "children"]);
669
+ return (<Dialog.Portal {...dialogPortalProps}>
670
+ <div class={`${SCOPE$2}-${PARTS$6.sheet}-${PARTS$6.portal} ${props.class ?? ""}`} style={props.style}>
671
+ {props.children}
672
+ </div>
673
+ </Dialog.Portal>);
674
+ };
675
+ /* ---- NAVIGATION SHEET OVERLAY */
676
+ const NavigationSheetOverlay = (props) => {
677
+ const [_, dialogOverlayProps] = splitProps(props, ["class", "style", "children"]);
678
+ return (<Dialog.Overlay class={`${SCOPE$2}-${PARTS$6.sheet}-${PARTS$6.overlay} ${props.class ?? ""}`} style={props.style} {...dialogOverlayProps}>
679
+ {props.children}
680
+ </Dialog.Overlay>);
681
+ };
682
+ /* ---- NAVIGATION SHEET CONTENT */
683
+ const NavigationSheetContent = (props) => {
684
+ const [_, dialogContentProps] = splitProps(props, ["class", "style", "children"]);
685
+ return (<Dialog.Content class={`${SCOPE$2}-${PARTS$6.sheet}-${PARTS$6.content} ${props.class ?? ""}`} style={props.style} {...dialogContentProps}>
686
+ {props.children}
687
+ </Dialog.Content>);
688
+ };
689
+ /* ---- NAVIGATION SHEET HEADER */
690
+ const NavigationSheetHeader = (props) => {
691
+ return (<div class={`${SCOPE$2}-${PARTS$6.sheet}-${PARTS$6.header} ${props.class ?? ""}`} style={props.style}>
692
+ {props.children}
693
+ </div>);
694
+ };
695
+ /* ---- NAVIGATION SHEET BRAND */
696
+ const NavigationSheetBrand = (props) => {
697
+ return (<div class={`${SCOPE$2}-${PARTS$6.sheet}-${PARTS$6.brand} ${props.class ?? ""}`} style={props.style}>
698
+ {props.children}
699
+ </div>);
700
+ };
701
+ /* ---- NAVIGATION SHEET CLOSE */
702
+ const NavigationSheetClose = (props) => {
703
+ const [_, dialogCloseButtonProps] = splitProps(props, ["class", "style", "children"]);
704
+ return (<Dialog.CloseButton class={`${SCOPE$2}-${PARTS$6.sheet}-${PARTS$6.close} ${props.class ?? ""}`} style={props.style} {...dialogCloseButtonProps}>
705
+ {props.children}
706
+ </Dialog.CloseButton>);
707
+ };
708
+ /* ---- NAVIGATION SHEET MENU */
709
+ const NavigationSheetMenu = (props) => {
710
+ return (<div class={`${SCOPE$2}-${PARTS$6.sheet}-${PARTS$6.menu} ${props.class ?? ""}`} style={props.style}>
711
+ {props.children}
712
+ </div>);
713
+ };
714
+ const NavigationSheetMenuLink = (props) => {
715
+ const [_, anchorProps] = splitProps(props, ["class", "style", "children"]);
716
+ return (<Dialog.CloseButton style={{ display: "contents" }}>
717
+ <A class={`${SCOPE$2}-${PARTS$6.sheet}-${PARTS$6.menu}-${PARTS$6.link} ${props.class ?? ""}`} style={props.style} activeClass={STATES.current} end={true} {...anchorProps}>
718
+ {props.children}
719
+ </A>
720
+ </Dialog.CloseButton>);
721
+ };
722
+ /* ---- NAVIGATION SHEET CTA */
723
+ const NavigationSheetCTA = (props) => {
724
+ return (<div class={`${SCOPE$2}-${PARTS$6.sheet}-${PARTS$6.cta} ${props.class ?? ""}`} style={props.style}>
725
+ {props.children}
726
+ </div>);
727
+ };
728
+ const NavigationSheetCTALink = (props) => {
729
+ const [_, anchorProps] = splitProps(props, ["class", "style", "children", "variant"]);
730
+ return (<Dialog.CloseButton style={{ display: "contents" }}>
731
+ <A end={true} {...anchorProps} style={{ display: "contents" }}>
732
+ <Button variant={props.variant === "primary" ? "solid" : "default"} color="neutral">
733
+ {props.children}
734
+ </Button>
735
+ </A>
736
+ </Dialog.CloseButton>);
737
+ };
738
+ /* NAVIGATION */
739
+ const Navigation = (props) => {
740
+ return (<NavigationRoot>
741
+ <NavigationBar>
742
+ <NavigationBarBrand>{props.brand}</NavigationBarBrand>
743
+ <NavigationBarMenu>
744
+ <For each={props.links}>
745
+ {(link) => <NavigationBarMenuLink {...link}>{link.label}</NavigationBarMenuLink>}
746
+ </For>
747
+ </NavigationBarMenu>
748
+
749
+ <Show when={props.cta}>
750
+ {(cta) => (<NavigationBarCTA>
751
+ <Show when={cta().secondary}>
752
+ {(secondary) => (<NavigationBarCTALink variant="secondary" {...secondary()}>
753
+ {secondary().label}
754
+ </NavigationBarCTALink>)}
755
+ </Show>
756
+ <NavigationBarCTALink variant="primary" {...cta().primary}>
757
+ {cta().primary.label}
758
+ </NavigationBarCTALink>
759
+ </NavigationBarCTA>)}
760
+ </Show>
761
+
762
+ <NavigationSheet>
763
+ <NavigationSheetTrigger>
764
+ <Menu />
765
+ </NavigationSheetTrigger>
766
+
767
+ <NavigationSheetPortal>
768
+ <NavigationSheetOverlay />
769
+ <NavigationSheetContent>
770
+ <NavigationSheetHeader>
771
+ <NavigationSheetBrand>{props.brand}</NavigationSheetBrand>
772
+ <NavigationSheetClose>
773
+ <X />
774
+ </NavigationSheetClose>
775
+ </NavigationSheetHeader>
776
+
777
+ <NavigationSheetMenu>
778
+ <For each={props.links}>
779
+ {(link) => (<NavigationSheetMenuLink {...link}>{link.label}</NavigationSheetMenuLink>)}
780
+ </For>
781
+ </NavigationSheetMenu>
782
+
783
+ <Show when={props.cta}>
784
+ {(cta) => (<NavigationSheetCTA>
785
+ <Show when={cta().secondary}>
786
+ {(secondary) => (<NavigationSheetCTALink variant="secondary" {...secondary()}>
787
+ {secondary().label}
788
+ </NavigationSheetCTALink>)}
789
+ </Show>
790
+ <NavigationSheetCTALink variant="primary" {...cta().primary}>
791
+ {cta().primary.label}
792
+ </NavigationSheetCTALink>
793
+ </NavigationSheetCTA>)}
794
+ </Show>
795
+ </NavigationSheetContent>
796
+ </NavigationSheetPortal>
797
+ </NavigationSheet>
798
+ </NavigationBar>
799
+ </NavigationRoot>);
800
+ };
801
+
802
+ /* CLASSES */
803
+ const SCOPE$1 = "page";
804
+ const PARTS$5 = {
805
+ header: "header",
806
+ footer: "footer",
807
+ main: "main",
808
+ };
809
+ const Page = (props) => {
810
+ return (<div class={`${SCOPE$1} ${props.class ?? ""}`} style={props.style}>
811
+ <div class={`${SCOPE$1}-${PARTS$5.header}`}>{props.header}</div>
812
+
813
+ <main class={`${SCOPE$1}-${PARTS$5.main}`}>{props.children}</main>
814
+
815
+ <div class={`${SCOPE$1}-${PARTS$5.footer}`}>{props.footer}</div>
816
+ </div>);
817
+ };
818
+
819
+ const P = (props) => {
820
+ const mixins = () => `${TextMixin.classes(props)} ${StyleMixin.classes(props)}`;
821
+ return (<p class={mixins()} style={props.style}>
822
+ {props.children}
823
+ </p>);
824
+ };
825
+ const H1 = (props) => {
826
+ const mixins = () => `${TextMixin.classes(props)} ${StyleMixin.classes(props)}`;
827
+ return (<h1 class={mixins()} style={props.style}>
828
+ {props.children}
829
+ </h1>);
830
+ };
831
+ const H2 = (props) => {
832
+ const mixins = () => `${TextMixin.classes(props)} ${StyleMixin.classes(props)}`;
833
+ return (<h2 class={mixins()} style={props.style}>
834
+ {props.children}
835
+ </h2>);
836
+ };
837
+ const H3 = (props) => {
838
+ const mixins = () => `${TextMixin.classes(props)} ${StyleMixin.classes(props)}`;
839
+ return (<h3 class={mixins()} style={props.style}>
840
+ {props.children}
841
+ </h3>);
842
+ };
843
+ const H4 = (props) => {
844
+ const mixins = () => `${TextMixin.classes(props)} ${StyleMixin.classes(props)}`;
845
+ return (<h4 class={mixins()} style={props.style}>
846
+ {props.children}
847
+ </h4>);
848
+ };
849
+ const H5 = (props) => {
850
+ const mixins = () => `${TextMixin.classes(props)} ${StyleMixin.classes(props)}`;
851
+ return (<h5 class={mixins()} style={props.style}>
852
+ {props.children}
853
+ </h5>);
854
+ };
855
+ const H6 = (props) => {
856
+ const mixins = () => `${TextMixin.classes(props)} ${StyleMixin.classes(props)}`;
857
+ return (<h6 class={mixins()} style={props.style}>
858
+ {props.children}
859
+ </h6>);
860
+ };
861
+
862
+ /* CLASSES */
863
+ const SECTION = "section";
864
+ const PARTS$4 = {
865
+ root: SECTION,
866
+ title: `${SECTION}-title`,
867
+ description: `${SECTION}-description`,
868
+ tagline: `${SECTION}-tagline`,
869
+ };
870
+ const VARIANTS = {
871
+ hero: "hero",
872
+ };
873
+ /* CLASS GENERATOR */
874
+ function heroClass(props) {
875
+ return props.hero ? VARIANTS.hero : "";
876
+ }
877
+ /* SECTION TITLE */
878
+ const SectionTitle = (props) => {
879
+ return (<Switch>
880
+ <Match when={props.hero}>
881
+ <H1 class={`${PARTS$4.title} ${heroClass(props)} ${StyleMixin.classes(props)}`} style={props.style} textColor={props.textColor} textIntensity={props.textIntensity} textFamily={props.textFamily} textWeight={props.textWeight} textSize={props.textSize} textLine={props.textLine} textAlign={props.textAlign}>
882
+ {props.children}
883
+ </H1>
884
+ </Match>
885
+ <Match when={!props.hero}>
886
+ <H2 class={`${PARTS$4.title} ${heroClass(props)} ${StyleMixin.classes(props)}`} textColor={props.textColor} textIntensity={props.textIntensity} textFamily={props.textFamily} textWeight={props.textWeight} textSize={props.textSize} textLine={props.textLine} style={props.style} textAlign={props.textAlign}>
887
+ {props.children}
888
+ </H2>
889
+ </Match>
890
+ </Switch>);
891
+ };
892
+ /* SECTION DESCRIPTION */
893
+ const SectionDescription = (props) => {
894
+ return (<P class={`${PARTS$4.description} ${heroClass(props)} ${StyleMixin.classes(props)}`} textColor={props.textColor} textIntensity={props.textIntensity} textFamily={props.textFamily} textWeight={props.textWeight} textSize={props.textSize} textLine={props.textLine} style={props.style} textAlign={props.textAlign}>
895
+ {props.children}
896
+ </P>);
897
+ };
898
+ /* SECTION TAGLINE */
899
+ const SectionTagline = (props) => {
900
+ return (<P class={`${PARTS$4.tagline} ${heroClass(props)} ${StyleMixin.classes(props)}`} textColor={props.textColor} textIntensity={props.textIntensity} textFamily={props.textFamily} textWeight={props.textWeight} textSize={props.textSize} textLine={props.textLine} style={props.style} textAlign={props.textAlign}>
901
+ {props.children}
902
+ </P>);
903
+ };
904
+ /* SECTION ROOT */
905
+ const SectionRoot = (props) => {
906
+ const mixins = () => `${PanelMixin.classes(props)} ${PaddingMixin.classes(props)} ${HeightMixin.classes(props)} ${TextMixin.classes(props)} ${StyleMixin.classes(props)}`;
907
+ return (<section class={`${PARTS$4.root} ${mixins()}`} style={props.style}>
908
+ {props.children}
909
+ </section>);
910
+ };
911
+ /* SECTION */
912
+ const Section = Object.assign(SectionRoot, {
913
+ Title: SectionTitle,
914
+ Description: SectionDescription,
915
+ Tagline: SectionTagline,
916
+ });
917
+
918
+ /* CLASSES */
919
+ const CARD = "card";
920
+ const PARTS$3 = {
921
+ root: CARD,
922
+ header: `${CARD}-header`,
923
+ content: `${CARD}-content`,
924
+ footer: `${CARD}-footer`,
925
+ media: `${CARD}-media`,
926
+ };
927
+ const Card = (props) => {
928
+ const options = () => ({
929
+ ...props,
930
+ padding: props.padding ?? "medium",
931
+ align: props.align ?? "start",
932
+ textAlign: props.textAlign ?? "left",
933
+ panelColor: props.panelColor ?? "neutral",
934
+ panelIntensity: props.panelIntensity ?? "subtle",
935
+ panelBorder: props.panelBorder ?? "all",
936
+ panelRadius: props.panelRadius ?? "all",
937
+ });
938
+ const mixins = () => `${PanelMixin.classes(options())} ${WidthMixin.classes(options())} ${StyleMixin.classes(options())}`;
939
+ return (<div class={`${PARTS$3.root} ${mixins()}`} style={props.style}>
940
+ {props.header && (<Stack class={`${PARTS$3.header}`} align={options().align} textAlign={options().textAlign} padding={options().padding}>
941
+ {props.header}
942
+ </Stack>)}
943
+ {props.media && (<Stack class={`${PARTS$3.media}`} align={options().align} textAlign={options().textAlign} padding={options().padding}>
944
+ {props.media}
945
+ </Stack>)}
946
+ {props.children && (<Stack class={`${PARTS$3.content}`} align={options().align} textAlign={options().textAlign} padding={options().padding} gap={options().gap}>
947
+ {props.children}
948
+ </Stack>)}
949
+ {props.footer && (<Stack class={`${PARTS$3.footer}`} align={options().align} textAlign={options().textAlign} padding={options().padding}>
950
+ {props.footer}
951
+ </Stack>)}
952
+ </div>);
953
+ };
954
+
955
+ /* CSS CLASSES */
956
+ const SCOPE = "carousel";
957
+ const PARTS$2 = {
958
+ base: "base",
959
+ container: "container",
960
+ slide: "slide",
961
+ };
962
+ const CarouselRoot = (props) => {
963
+ /* STATES */
964
+ const [canScrollPrev, setCanScrollPrev] = createSignal(false);
965
+ const [canScrollNext, setCanScrollNext] = createSignal(false);
966
+ /* EMBLA API*/
967
+ const plugins = props.autoplay ? [AutoPlay()] : [];
968
+ const [emblaRef, emblaApi] = createEmblaCarousel(() => ({ loop: props.loop ?? false }), () => plugins);
969
+ /* LIFE CYCLE */
970
+ onMount(() => {
971
+ const api = emblaApi();
972
+ if (api)
973
+ api.on("init", updateCanScroll);
974
+ if (api)
975
+ api.on("select", updateCanScroll);
976
+ });
977
+ /* METHODS */
978
+ function updateCanScroll(api) {
979
+ setCanScrollPrev(api.canScrollPrev());
980
+ setCanScrollNext(api.canScrollNext());
981
+ }
982
+ function onKeyDown(event) {
983
+ if (event.key === "ArrowLeft") {
984
+ event.preventDefault();
985
+ emblaApi()?.scrollPrev();
986
+ }
987
+ else if (event.key === "ArrowRight") {
988
+ event.preventDefault();
989
+ emblaApi()?.scrollNext();
990
+ }
991
+ }
992
+ return (<div class={`${SCOPE} ${props.class ?? ""}`} style={props.style}>
993
+ <Button variant="default" color="neutral" classList={{ visible: canScrollPrev() }} onClick={() => emblaApi()?.scrollPrev()}>
994
+ <ChevronLeft />
995
+ </Button>
996
+ <button type="button" ref={emblaRef} class={`${SCOPE}-${PARTS$2.base}`} onKeyDown={onKeyDown} tabIndex={0}>
997
+ <div class={`${SCOPE}-${PARTS$2.container}`}>{props.children}</div>
998
+ </button>
999
+ <Button variant="default" color="neutral" classList={{ visible: canScrollNext() }} onClick={() => emblaApi()?.scrollNext()}>
1000
+ <ChevronRight />
1001
+ </Button>
1002
+ </div>);
1003
+ };
1004
+ /* CAROUSEL SLIDE */
1005
+ const CarouselSlide = (props) => {
1006
+ return (<div class={`${SCOPE}-${PARTS$2.slide} ${props.class ?? ""}`} style={props.style}>
1007
+ {props.children}
1008
+ </div>);
1009
+ };
1010
+ /* CAROUSEL */
1011
+ const Carousel = Object.assign(CarouselRoot, {
1012
+ Slide: CarouselSlide,
1013
+ });
1014
+
1015
+ /* CSS CLASSES */
1016
+ const AVATAR = "avatar";
1017
+ const PARTS$1 = {
1018
+ root: AVATAR,
1019
+ image: `${AVATAR}-image`,
1020
+ };
1021
+ const Avatar = (props) => {
1022
+ return (<div class={`${PARTS$1.root} ${StyleMixin.classes(props)}`}>
1023
+ <img class={`${PARTS$1.image}`} src={props.src} alt={props.alt}/>
1024
+ </div>);
1025
+ };
1026
+
1027
+ /* CSS CLASSES */
1028
+ const IMAGE = "image";
1029
+ const PARTS = {
1030
+ root: IMAGE,
1031
+ image: `${IMAGE}-img`,
1032
+ };
1033
+ const ASPECTS = {
1034
+ square: `${IMAGE}-square`,
1035
+ landscape: `${IMAGE}-landscape`,
1036
+ portrait: `${IMAGE}-portrait`,
1037
+ wide: `${IMAGE}-wide`,
1038
+ ultrawide: `${IMAGE}-ultrawide`,
1039
+ golden: `${IMAGE}-golden`,
1040
+ };
1041
+ const FITS = {
1042
+ contain: `${IMAGE}-contain`,
1043
+ cover: `${IMAGE}-cover`,
1044
+ };
1045
+ const Image = (props) => {
1046
+ return (<div class={`${PARTS.root} ${ASPECTS[props.aspect]} ${FITS[props.fit]} ${StyleMixin.classes(props)}`} style={props.style}>
1047
+ <img class={`${PARTS.image}`} src={props.src} alt={props.alt}/>
1048
+ </div>);
1049
+ };
1050
+
1051
+ export { Avatar, Button, Card, Carousel, Cluster, Container, Dual, Footer, H1, H2, H3, H4, H5, H6, Image, Navigation, NavigationRoot, P, Page, Section, Stack };