@hkdigital/lib-sveltekit 0.1.62 → 0.1.65

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 (209) hide show
  1. package/README.md +135 -135
  2. package/dist/assets/autospuiten/car-paint-picker.js +41 -41
  3. package/dist/assets/autospuiten/labels.js +7 -7
  4. package/dist/classes/data/IterableTree.js +243 -243
  5. package/dist/classes/data/Selector.js +190 -190
  6. package/dist/classes/data/index.js +2 -2
  7. package/dist/classes/index.js +4 -4
  8. package/dist/classes/promise/HkPromise.js +377 -377
  9. package/dist/classes/promise/index.js +1 -1
  10. package/dist/classes/stores/SubscribersCount.js +107 -107
  11. package/dist/classes/stores/index.js +1 -1
  12. package/dist/classes/streams/LogTransformStream.js +19 -19
  13. package/dist/classes/streams/ServerEventsStore.js +110 -110
  14. package/dist/classes/streams/TimeStampSource.js +26 -26
  15. package/dist/classes/streams/index.js +3 -3
  16. package/dist/classes/svelte/audio/AudioLoader.svelte.js +58 -58
  17. package/dist/classes/svelte/audio/AudioScene.svelte.js +295 -295
  18. package/dist/classes/svelte/audio/mocks.js +35 -35
  19. package/dist/classes/svelte/finite-state-machine/FiniteStateMachine.svelte.js +133 -133
  20. package/dist/classes/svelte/finite-state-machine/index.js +1 -1
  21. package/dist/classes/svelte/image/ImageLoader.svelte.js +47 -47
  22. package/dist/classes/svelte/image/ImageScene.svelte.js +253 -253
  23. package/dist/classes/svelte/image/ImageVariantsLoader.svelte.js +152 -152
  24. package/dist/classes/svelte/image/index.js +4 -4
  25. package/dist/classes/svelte/image/mocks.js +35 -35
  26. package/dist/classes/svelte/image/typedef.js +8 -8
  27. package/dist/classes/svelte/index.js +14 -14
  28. package/dist/classes/svelte/loading-state-machine/LoadingStateMachine.svelte.js +109 -109
  29. package/dist/classes/svelte/loading-state-machine/constants.js +16 -16
  30. package/dist/classes/svelte/loading-state-machine/index.js +3 -3
  31. package/dist/classes/svelte/network-loader/NetworkLoader.svelte.js +331 -331
  32. package/dist/classes/svelte/network-loader/constants.js +3 -3
  33. package/dist/classes/svelte/network-loader/index.js +3 -3
  34. package/dist/classes/svelte/network-loader/mocks.js +30 -30
  35. package/dist/classes/svelte/network-loader/typedef.js +8 -8
  36. package/dist/components/area/HkArea.svelte +49 -49
  37. package/dist/components/area/HkGridArea.svelte +77 -77
  38. package/dist/components/area/index.js +2 -2
  39. package/dist/components/buttons/button/Button.svelte +82 -82
  40. package/dist/components/buttons/button-icon-steeze/SteezeIconButton.svelte +30 -30
  41. package/dist/components/buttons/button-text/TextButton.svelte +21 -21
  42. package/dist/components/buttons/index.js +3 -3
  43. package/dist/components/debug/debug-panel-design-scaling/DebugPanelDesignScaling.svelte +146 -146
  44. package/dist/components/debug/index.js +1 -1
  45. package/dist/components/hkdev/blocks/TextBlock.svelte +46 -46
  46. package/dist/components/hkdev/buttons/CheckButton.svelte +62 -62
  47. package/dist/components/icons/HkIcon.svelte +86 -86
  48. package/dist/components/icons/HkTabIcon.svelte +116 -116
  49. package/dist/components/icons/SteezeIcon.svelte +97 -97
  50. package/dist/components/icons/index.js +6 -6
  51. package/dist/components/icons/typedef.js +16 -16
  52. package/dist/components/index.js +2 -2
  53. package/dist/components/inputs/index.js +1 -1
  54. package/dist/components/inputs/text-input/TestTextInput.svelte__ +102 -102
  55. package/dist/components/inputs/text-input/TextInput.svelte +223 -223
  56. package/dist/components/inputs/text-input/TextInput.svelte___ +83 -83
  57. package/dist/components/inputs/text-input/assets/IconInvalid.svelte +14 -14
  58. package/dist/components/inputs/text-input/assets/IconValid.svelte +12 -12
  59. package/dist/components/layout/grid-layers/GridLayers.svelte +167 -167
  60. package/dist/components/layout/index.js +1 -1
  61. package/dist/components/panels/index.js +1 -1
  62. package/dist/components/panels/panel/Panel.svelte +43 -43
  63. package/dist/components/rows/index.js +3 -3
  64. package/dist/components/rows/panel-grid-row/PanelGridRow.svelte +104 -104
  65. package/dist/components/rows/panel-row-2/PanelRow2.svelte +40 -40
  66. package/dist/components/tab-bar/HkTabBar.state.svelte.js +149 -149
  67. package/dist/components/tab-bar/HkTabBar.svelte +74 -74
  68. package/dist/components/tab-bar/HkTabBarSelector.state.svelte.js +93 -93
  69. package/dist/components/tab-bar/HkTabBarSelector.svelte +49 -49
  70. package/dist/components/tab-bar/index.js +17 -17
  71. package/dist/components/tab-bar/typedef.js +8 -8
  72. package/dist/config/imagetools-config.js +189 -189
  73. package/dist/config/imagetools.d.ts +71 -71
  74. package/dist/config/typedef.js +8 -8
  75. package/dist/constants/bases.js +13 -13
  76. package/dist/constants/errors/api.js +9 -9
  77. package/dist/constants/errors/generic.js +5 -5
  78. package/dist/constants/errors/index.js +3 -3
  79. package/dist/constants/errors/jwt.js +5 -5
  80. package/dist/constants/http/headers.js +6 -6
  81. package/dist/constants/http/index.js +2 -2
  82. package/dist/constants/http/methods.js +2 -2
  83. package/dist/constants/index.js +3 -3
  84. package/dist/constants/mime/application.js +5 -5
  85. package/dist/constants/mime/audio.js +13 -13
  86. package/dist/constants/mime/image.js +3 -3
  87. package/dist/constants/mime/index.js +4 -4
  88. package/dist/constants/mime/text.js +2 -2
  89. package/dist/constants/regexp/index.js +31 -31
  90. package/dist/constants/regexp/inspiratie.js__ +95 -95
  91. package/dist/constants/regexp/text.js +49 -49
  92. package/dist/constants/regexp/user.js +32 -32
  93. package/dist/constants/regexp/web.js +3 -3
  94. package/dist/constants/state-labels/input-states.js +11 -11
  95. package/dist/constants/state-labels/submit-states.js +4 -4
  96. package/dist/constants/time.js +28 -28
  97. package/dist/css/utilities.css +43 -43
  98. package/dist/design/design-config.js +73 -73
  99. package/dist/design/tailwind-theme-extend.js +158 -158
  100. package/dist/schemas/index.js +1 -1
  101. package/dist/schemas/validate-url.js +180 -180
  102. package/dist/server/index.js +1 -1
  103. package/dist/server/logger.js +94 -94
  104. package/dist/states/index.js +1 -1
  105. package/dist/states/navigation.svelte.js +55 -55
  106. package/dist/stores/index.js +1 -1
  107. package/dist/stores/theme.js +80 -80
  108. package/dist/themes/hkdev/components/blocks/text-block.css +41 -41
  109. package/dist/themes/hkdev/components/boxes/game-box.css +12 -12
  110. package/dist/themes/hkdev/components/buttons/button-icon-steeze.css +22 -22
  111. package/dist/themes/hkdev/components/buttons/button-text.css +32 -32
  112. package/dist/themes/hkdev/components/buttons/button.css +142 -142
  113. package/dist/themes/hkdev/components/buttons/skip-button.css +6 -6
  114. package/dist/themes/hkdev/components/icons/icon-steeze.css +22 -22
  115. package/dist/themes/hkdev/components/inputs/text-input.css +104 -104
  116. package/dist/themes/hkdev/components/panels/panel.css +27 -27
  117. package/dist/themes/hkdev/components/rows/panel-grid-row.css +6 -6
  118. package/dist/themes/hkdev/components/rows/panel-row-2.css +7 -7
  119. package/dist/themes/hkdev/components.css +47 -47
  120. package/dist/themes/hkdev/debug.css +1 -1
  121. package/dist/themes/hkdev/global/layout.css +39 -39
  122. package/dist/themes/hkdev/global/on-colors.css +53 -53
  123. package/dist/themes/hkdev/globals.css +11 -11
  124. package/dist/themes/hkdev/responsive.css +12 -12
  125. package/dist/themes/hkdev/theme-ext.js +15 -15
  126. package/dist/themes/hkdev/theme.js +235 -235
  127. package/dist/themes/index.js +1 -1
  128. package/dist/util/array/index.js +455 -455
  129. package/dist/util/bases/base58.js +262 -262
  130. package/dist/util/bases/index.js +1 -1
  131. package/dist/util/compare/index.js +247 -247
  132. package/dist/util/css/css-vars.js +83 -83
  133. package/dist/util/css/index.js +1 -1
  134. package/dist/util/design-system/components/states.js +22 -22
  135. package/dist/util/design-system/css/clamp.js +66 -66
  136. package/dist/util/design-system/css/root-design-vars.js +100 -100
  137. package/dist/util/design-system/index.js +5 -5
  138. package/dist/util/design-system/layout/scaling.js +228 -228
  139. package/dist/util/design-system/skeleton.js +208 -208
  140. package/dist/util/design-system/tailwind.js +288 -288
  141. package/dist/util/expect/arrays.js +47 -47
  142. package/dist/util/expect/index.js +259 -259
  143. package/dist/util/expect/primitives.js +55 -55
  144. package/dist/util/expect/url.js +60 -60
  145. package/dist/util/function/index.js +218 -218
  146. package/dist/util/http/errors.js +97 -97
  147. package/dist/util/http/headers.js +45 -45
  148. package/dist/util/http/http-request.js +294 -294
  149. package/dist/util/http/index.js +22 -22
  150. package/dist/util/http/json-request.js +143 -143
  151. package/dist/util/http/mocks.js +65 -65
  152. package/dist/util/http/response.js +241 -241
  153. package/dist/util/http/test-data__/content-length-test-hkdigital-small.V4HfZyBQ.avif +0 -0
  154. package/dist/util/http/url.js +52 -52
  155. package/dist/util/image/index.js +86 -86
  156. package/dist/util/index.js +2 -2
  157. package/dist/util/is/index.js +140 -140
  158. package/dist/util/iterate/index.js +234 -234
  159. package/dist/util/object/index.js +1361 -1361
  160. package/dist/util/singleton/index.js +97 -97
  161. package/dist/util/string/array-path.js +75 -75
  162. package/dist/util/string/convert.js +54 -54
  163. package/dist/util/string/fs.js +226 -226
  164. package/dist/util/string/index.js +5 -5
  165. package/dist/util/string/interpolate.js +61 -61
  166. package/dist/util/string/pad.js +10 -10
  167. package/dist/util/svelte/index.js +4 -4
  168. package/dist/util/svelte/loading/loading-tracker.svelte.js +108 -108
  169. package/dist/util/svelte/observe/index.js +49 -49
  170. package/dist/util/svelte/state-context/index.js +83 -83
  171. package/dist/util/svelte/wait/index.js +38 -38
  172. package/dist/util/sveltekit/index.js +1 -1
  173. package/dist/util/sveltekit/route-folders/index.js +101 -101
  174. package/dist/util/time/index.js +323 -323
  175. package/dist/util/unique/index.js +249 -249
  176. package/dist/valibot/date.js__ +10 -10
  177. package/dist/valibot/index.js +9 -9
  178. package/dist/valibot/url.js +95 -95
  179. package/dist/valibot/user.js +23 -23
  180. package/dist/widgets/button-group/ButtonGroup.svelte +82 -94
  181. package/dist/widgets/button-group/ButtonGroup.svelte.d.ts +0 -2
  182. package/dist/widgets/button-group/typedef.js +10 -10
  183. package/dist/widgets/compare-left-right/CompareLeftRight.svelte +179 -179
  184. package/dist/widgets/compare-left-right/index.js +1 -1
  185. package/dist/widgets/game-box/GameBox.svelte +579 -186
  186. package/dist/widgets/game-box/GameBox.svelte.d.ts +64 -4
  187. package/dist/widgets/game-box/gamebox.util.js +83 -83
  188. package/dist/widgets/hk-app-layout/HkAppLayout.state.svelte.js +25 -25
  189. package/dist/widgets/hk-app-layout/HkAppLayout.svelte +251 -251
  190. package/dist/widgets/image-box/ImageBox.svelte +212 -212
  191. package/dist/widgets/image-box/index.js +5 -5
  192. package/dist/widgets/image-box/typedef.js +32 -32
  193. package/dist/widgets/index.js +23 -23
  194. package/dist/widgets/presenter/(broken) Presenter.state.svelte.js__ +613 -0
  195. package/dist/widgets/presenter/ImageSlide.svelte +64 -64
  196. package/dist/widgets/presenter/Presenter.state.svelte.js +636 -636
  197. package/dist/widgets/presenter/Presenter.svelte +140 -140
  198. package/dist/widgets/presenter/Presenter.svelte__ +125 -0
  199. package/dist/widgets/presenter/constants.js +7 -7
  200. package/dist/widgets/presenter/index.js +10 -10
  201. package/dist/widgets/presenter/typedef.js +106 -106
  202. package/dist/widgets/presenter/util.js +210 -210
  203. package/dist/widgets/virtual-viewport/VirtualViewport.svelte +196 -196
  204. package/dist/zod/all.js +33 -33
  205. package/dist/zod/generic.js +11 -11
  206. package/dist/zod/javascript.js +32 -32
  207. package/dist/zod/user.js +16 -16
  208. package/dist/zod/web.js +52 -52
  209. package/package.json +102 -102
@@ -1,73 +1,73 @@
1
- /* == Design dimensions == */
2
-
3
- export const DESIGN = {
4
- width: 1024,
5
- height: 768
6
- };
7
-
8
- /* == Scaling-clamping behaviour == */
9
-
10
- export const CLAMPING = {
11
- ui: { min: 0.3, max: 2 },
12
- textBase: { min: 0.75, max: 1.5 },
13
- textHeading: { min: 0.75, max: 2.25 },
14
- textUi: { min: 0.5, max: 1.25 }
15
- };
16
-
17
- /* == Text == */
18
-
19
- export const TEXT_POINT_SIZES = [
20
- 1, 2, 4, 6, 8, 10, 11, 12, 16, 20, 24, 28, 32, 36, 50
21
- ];
22
-
23
- export const VIEWPORT_POINT_SIZES = [
24
- 1, 2, 4, 5, 6, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 120, 140, 160, 180,
25
- 200
26
- ];
27
-
28
- export const TEXT_BASE_SIZES = {
29
- sm: { size: 14, lineHeight: 1.25 },
30
- md: { size: 16, lineHeight: 1.25 },
31
- lg: { size: 18, lineHeight: 1.25 }
32
- };
33
-
34
- export const TEXT_HEADING_SIZES = {
35
- h1: { size: 32, lineHeight: 1.25 },
36
- h2: { size: 28, lineHeight: 1.25 },
37
- h3: { size: 24, lineHeight: 1.25 },
38
- h4: { size: 20, lineHeight: 1.25 },
39
- h5: { size: 16, lineHeight: 1.25 }
40
- };
41
-
42
- export const TEXT_UI_SIZES = {
43
- sm: { size: 14, lineHeight: 1 },
44
- md: { size: 16, lineHeight: 1 },
45
- lg: { size: 18, lineHeight: 1 }
46
- };
47
-
48
- /* == Border radius == */
49
-
50
- export const RADIUS_SIZES = {
51
- none: '0px',
52
- xs: { size: 5 },
53
- sm: { size: 10 },
54
- md: { size: 25 },
55
- lg: { size: 35 },
56
- full: '9999px'
57
- };
58
-
59
- /* == Border width == */
60
-
61
- export const BORDER_WIDTH_SIZES = {
62
- thin: { size: 1 },
63
- normal: { size: 2 },
64
- thick: { size: 4 }
65
- };
66
-
67
- /* == Stroke width == */
68
-
69
- export const STROKE_WIDTH_SIZES = {
70
- thin: { size: 1 },
71
- normal: { size: 2 },
72
- thick: { size: 4 }
73
- };
1
+ /* == Design dimensions == */
2
+
3
+ export const DESIGN = {
4
+ width: 1024,
5
+ height: 768
6
+ };
7
+
8
+ /* == Scaling-clamping behaviour == */
9
+
10
+ export const CLAMPING = {
11
+ ui: { min: 0.3, max: 2 },
12
+ textBase: { min: 0.75, max: 1.5 },
13
+ textHeading: { min: 0.75, max: 2.25 },
14
+ textUi: { min: 0.5, max: 1.25 }
15
+ };
16
+
17
+ /* == Text == */
18
+
19
+ export const TEXT_POINT_SIZES = [
20
+ 1, 2, 4, 6, 8, 10, 11, 12, 16, 20, 24, 28, 32, 36, 50
21
+ ];
22
+
23
+ export const VIEWPORT_POINT_SIZES = [
24
+ 1, 2, 4, 5, 6, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 120, 140, 160, 180,
25
+ 200
26
+ ];
27
+
28
+ export const TEXT_BASE_SIZES = {
29
+ sm: { size: 14, lineHeight: 1.25 },
30
+ md: { size: 16, lineHeight: 1.25 },
31
+ lg: { size: 18, lineHeight: 1.25 }
32
+ };
33
+
34
+ export const TEXT_HEADING_SIZES = {
35
+ h1: { size: 32, lineHeight: 1.25 },
36
+ h2: { size: 28, lineHeight: 1.25 },
37
+ h3: { size: 24, lineHeight: 1.25 },
38
+ h4: { size: 20, lineHeight: 1.25 },
39
+ h5: { size: 16, lineHeight: 1.25 }
40
+ };
41
+
42
+ export const TEXT_UI_SIZES = {
43
+ sm: { size: 14, lineHeight: 1 },
44
+ md: { size: 16, lineHeight: 1 },
45
+ lg: { size: 18, lineHeight: 1 }
46
+ };
47
+
48
+ /* == Border radius == */
49
+
50
+ export const RADIUS_SIZES = {
51
+ none: '0px',
52
+ xs: { size: 5 },
53
+ sm: { size: 10 },
54
+ md: { size: 25 },
55
+ lg: { size: 35 },
56
+ full: '9999px'
57
+ };
58
+
59
+ /* == Border width == */
60
+
61
+ export const BORDER_WIDTH_SIZES = {
62
+ thin: { size: 1 },
63
+ normal: { size: 2 },
64
+ thick: { size: 4 }
65
+ };
66
+
67
+ /* == Stroke width == */
68
+
69
+ export const STROKE_WIDTH_SIZES = {
70
+ thin: { size: 1 },
71
+ normal: { size: 2 },
72
+ thick: { size: 4 }
73
+ };
@@ -1,158 +1,158 @@
1
- /**
2
- * Design System Configuration
3
- * Using CSS Custom Properties (variables) for consistent scaling
4
- *
5
- * @note
6
- * The tailwind theme extensions require CSS custom
7
- * properties (variables) to be set at the root level
8
- * of your application to function properly.
9
- *
10
- * @example Implementation in SvelteKit +layout.svelte
11
- * <script>
12
- * import { onMount } from 'svelte';
13
- *
14
- * import '../app.css';
15
- *
16
- * let { children } = $props();
17
- *
18
- * import { DESIGN, CLAMPING }
19
- * from './design-config.js';
20
- *
21
- * import { rootDesignVarsHTML }
22
- * from '@hkdigital/lib-sveltekit/util/design-system/index.js';
23
- * </script>
24
- *
25
- * <svelte:head>
26
- * {@html rootDesignVarsHTML(DESIGN, CLAMPING)}
27
- * </svelte:head>
28
- *
29
- * Base units:
30
- * --scale-w: 0.052vw (Viewport Width Point)
31
- * --scale-h: 0.09259vh (Viewport Height Point)
32
- * --scale-viewport: min(var(--scale-w), var(--scale-h)) (Viewport Point)
33
- * --scale-ui: clamp(0.3, var(--scale-viewport), 2) (UI Point)
34
- * --scale-text-base: clamp(0.75, var(--scale-viewport), 1.5) (Base Text)
35
- * --scale-text-heading: clamp(0.75, var(--scale-viewport), 2.25) (Heading Text)
36
- * --scale-text-ui: clamp(0.5, var(--scale-viewport), 1.25) (UI Text)
37
- *
38
- * --
39
- *
40
- * UI Points (up) - Clamped scaling values
41
- * Based on viewport scaling with minimum and maximum bounds
42
- * to ensure usability across all screen sizes
43
- *
44
- * > PREFERRED METHOD FOR UI ELEMENT SCALING
45
- *
46
- * Examples:
47
- * 5up = 5px at design size (clamps between 1.5px and 10px)
48
- * 10up = 10px at design size (clamps between 3px and 20px)
49
- * 20up = 20px at design size (clamps between 6px and 40px)
50
- *
51
- * Used for:
52
- * - Component padding and margins
53
- * - Interface element sizing
54
- * - Any UI element that needs responsive scaling with guardrails
55
- *
56
- * --
57
- *
58
- * Text-Based Spacing Units (ut, bt, ht)
59
- * Scaled by their respective text scaling variables
60
- *
61
- * > PREFERRED METHOD FOR TEXT-RELATED SPACING
62
- *
63
- * Examples:
64
- * 4ut = calc(4px * var(--scale-text-ui)) // UI text spacing
65
- * 4bt = calc(4px * var(--scale-text-base)) // Base text spacing
66
- * 4ht = calc(4px * var(--scale-text-heading)) // Heading text spacing
67
- *
68
- * Used for:
69
- * - ut: Button padding, form spacing, UI component margins
70
- * - bt: Paragraph margins, list spacing, base gaps
71
- * - ht: Heading margins, title spacing
72
- *
73
- * --
74
- *
75
- * Viewport Points (wp, hp) - Responsive scaling values
76
- * wp: Uses width-based scaling (1920px reference)
77
- * hp: Uses height-based scaling (1080px reference)
78
- *
79
- * > ALTERNATIVE SCALING METHODS
80
- *
81
- * Examples:
82
- * 10wp = calc(10px * var(--scale-w))
83
- * 10hp = calc(10px * var(--scale-h))
84
- *
85
- * Used for:
86
- * - Interface scaling that needs to fit both width and height
87
- * - Maintaining aspect ratio of design
88
- * - Preventing overflow in either direction
89
- */
90
- import {
91
- generateTextBasedSpacing,
92
- generateViewportBasedSpacing,
93
- generateTextStyles,
94
- generateBorderRadiusStyles,
95
- generateWidthStyles
96
- } from '../util/design-system/tailwind.js';
97
-
98
- import {
99
- TEXT_POINT_SIZES,
100
- VIEWPORT_POINT_SIZES,
101
- TEXT_BASE_SIZES,
102
- TEXT_HEADING_SIZES,
103
- TEXT_UI_SIZES,
104
- RADIUS_SIZES,
105
- BORDER_WIDTH_SIZES,
106
- STROKE_WIDTH_SIZES
107
- } from './design-config.js';
108
-
109
- /* == Internals */
110
-
111
- const TEXT_BASED_SPACING = generateTextBasedSpacing(TEXT_POINT_SIZES);
112
- const VIEWPORT_BASED_SPACING =
113
- generateViewportBasedSpacing(VIEWPORT_POINT_SIZES);
114
-
115
- /* == Exports */
116
-
117
- export const spacing = {
118
- ...VIEWPORT_BASED_SPACING,
119
- ...TEXT_BASED_SPACING
120
- };
121
-
122
- export const fontSize = {
123
- ...TEXT_BASED_SPACING,
124
-
125
- // Named styles
126
- ...generateTextStyles(TEXT_BASE_SIZES, 'base'),
127
- ...generateTextStyles(TEXT_HEADING_SIZES, 'heading'),
128
- ...generateTextStyles(TEXT_UI_SIZES, 'ui')
129
- };
130
-
131
- export const borderRadius = {
132
- // Named styles
133
- ...generateBorderRadiusStyles(RADIUS_SIZES)
134
- };
135
-
136
- export const borderWidth = {
137
- // Named styles
138
- ...generateWidthStyles(BORDER_WIDTH_SIZES, 'width')
139
- };
140
-
141
- export const strokeWidth = {
142
- // Named styles
143
- ...generateWidthStyles(STROKE_WIDTH_SIZES, 'width')
144
- };
145
-
146
- export const outlineWidth = {
147
- // Named styles
148
- ...generateWidthStyles(STROKE_WIDTH_SIZES, '')
149
- };
150
-
151
- export const outlineOffset = {
152
- // Named styles
153
- ...generateWidthStyles(STROKE_WIDTH_SIZES, '')
154
- };
155
-
156
- // console.log('borderWidth', borderWidth);
157
- // console.log('outlineWidth', outlineWidth);
158
- // console.log('outlineOffset', outlineOffset);
1
+ /**
2
+ * Design System Configuration
3
+ * Using CSS Custom Properties (variables) for consistent scaling
4
+ *
5
+ * @note
6
+ * The tailwind theme extensions require CSS custom
7
+ * properties (variables) to be set at the root level
8
+ * of your application to function properly.
9
+ *
10
+ * @example Implementation in SvelteKit +layout.svelte
11
+ * <script>
12
+ * import { onMount } from 'svelte';
13
+ *
14
+ * import '../app.css';
15
+ *
16
+ * let { children } = $props();
17
+ *
18
+ * import { DESIGN, CLAMPING }
19
+ * from './design-config.js';
20
+ *
21
+ * import { rootDesignVarsHTML }
22
+ * from '@hkdigital/lib-sveltekit/util/design-system/index.js';
23
+ * </script>
24
+ *
25
+ * <svelte:head>
26
+ * {@html rootDesignVarsHTML(DESIGN, CLAMPING)}
27
+ * </svelte:head>
28
+ *
29
+ * Base units:
30
+ * --scale-w: 0.052vw (Viewport Width Point)
31
+ * --scale-h: 0.09259vh (Viewport Height Point)
32
+ * --scale-viewport: min(var(--scale-w), var(--scale-h)) (Viewport Point)
33
+ * --scale-ui: clamp(0.3, var(--scale-viewport), 2) (UI Point)
34
+ * --scale-text-base: clamp(0.75, var(--scale-viewport), 1.5) (Base Text)
35
+ * --scale-text-heading: clamp(0.75, var(--scale-viewport), 2.25) (Heading Text)
36
+ * --scale-text-ui: clamp(0.5, var(--scale-viewport), 1.25) (UI Text)
37
+ *
38
+ * --
39
+ *
40
+ * UI Points (up) - Clamped scaling values
41
+ * Based on viewport scaling with minimum and maximum bounds
42
+ * to ensure usability across all screen sizes
43
+ *
44
+ * > PREFERRED METHOD FOR UI ELEMENT SCALING
45
+ *
46
+ * Examples:
47
+ * 5up = 5px at design size (clamps between 1.5px and 10px)
48
+ * 10up = 10px at design size (clamps between 3px and 20px)
49
+ * 20up = 20px at design size (clamps between 6px and 40px)
50
+ *
51
+ * Used for:
52
+ * - Component padding and margins
53
+ * - Interface element sizing
54
+ * - Any UI element that needs responsive scaling with guardrails
55
+ *
56
+ * --
57
+ *
58
+ * Text-Based Spacing Units (ut, bt, ht)
59
+ * Scaled by their respective text scaling variables
60
+ *
61
+ * > PREFERRED METHOD FOR TEXT-RELATED SPACING
62
+ *
63
+ * Examples:
64
+ * 4ut = calc(4px * var(--scale-text-ui)) // UI text spacing
65
+ * 4bt = calc(4px * var(--scale-text-base)) // Base text spacing
66
+ * 4ht = calc(4px * var(--scale-text-heading)) // Heading text spacing
67
+ *
68
+ * Used for:
69
+ * - ut: Button padding, form spacing, UI component margins
70
+ * - bt: Paragraph margins, list spacing, base gaps
71
+ * - ht: Heading margins, title spacing
72
+ *
73
+ * --
74
+ *
75
+ * Viewport Points (wp, hp) - Responsive scaling values
76
+ * wp: Uses width-based scaling (1920px reference)
77
+ * hp: Uses height-based scaling (1080px reference)
78
+ *
79
+ * > ALTERNATIVE SCALING METHODS
80
+ *
81
+ * Examples:
82
+ * 10wp = calc(10px * var(--scale-w))
83
+ * 10hp = calc(10px * var(--scale-h))
84
+ *
85
+ * Used for:
86
+ * - Interface scaling that needs to fit both width and height
87
+ * - Maintaining aspect ratio of design
88
+ * - Preventing overflow in either direction
89
+ */
90
+ import {
91
+ generateTextBasedSpacing,
92
+ generateViewportBasedSpacing,
93
+ generateTextStyles,
94
+ generateBorderRadiusStyles,
95
+ generateWidthStyles
96
+ } from '../util/design-system/tailwind.js';
97
+
98
+ import {
99
+ TEXT_POINT_SIZES,
100
+ VIEWPORT_POINT_SIZES,
101
+ TEXT_BASE_SIZES,
102
+ TEXT_HEADING_SIZES,
103
+ TEXT_UI_SIZES,
104
+ RADIUS_SIZES,
105
+ BORDER_WIDTH_SIZES,
106
+ STROKE_WIDTH_SIZES
107
+ } from './design-config.js';
108
+
109
+ /* == Internals */
110
+
111
+ const TEXT_BASED_SPACING = generateTextBasedSpacing(TEXT_POINT_SIZES);
112
+ const VIEWPORT_BASED_SPACING =
113
+ generateViewportBasedSpacing(VIEWPORT_POINT_SIZES);
114
+
115
+ /* == Exports */
116
+
117
+ export const spacing = {
118
+ ...VIEWPORT_BASED_SPACING,
119
+ ...TEXT_BASED_SPACING
120
+ };
121
+
122
+ export const fontSize = {
123
+ ...TEXT_BASED_SPACING,
124
+
125
+ // Named styles
126
+ ...generateTextStyles(TEXT_BASE_SIZES, 'base'),
127
+ ...generateTextStyles(TEXT_HEADING_SIZES, 'heading'),
128
+ ...generateTextStyles(TEXT_UI_SIZES, 'ui')
129
+ };
130
+
131
+ export const borderRadius = {
132
+ // Named styles
133
+ ...generateBorderRadiusStyles(RADIUS_SIZES)
134
+ };
135
+
136
+ export const borderWidth = {
137
+ // Named styles
138
+ ...generateWidthStyles(BORDER_WIDTH_SIZES, 'width')
139
+ };
140
+
141
+ export const strokeWidth = {
142
+ // Named styles
143
+ ...generateWidthStyles(STROKE_WIDTH_SIZES, 'width')
144
+ };
145
+
146
+ export const outlineWidth = {
147
+ // Named styles
148
+ ...generateWidthStyles(STROKE_WIDTH_SIZES, '')
149
+ };
150
+
151
+ export const outlineOffset = {
152
+ // Named styles
153
+ ...generateWidthStyles(STROKE_WIDTH_SIZES, '')
154
+ };
155
+
156
+ // console.log('borderWidth', borderWidth);
157
+ // console.log('outlineWidth', outlineWidth);
158
+ // console.log('outlineOffset', outlineOffset);
@@ -1 +1 @@
1
- export * from './validate-url.js';
1
+ export * from './validate-url.js';