@hkdigital/lib-sveltekit 0.2.20 → 0.2.21
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.
- package/README.md +135 -135
- package/dist/assets/autospuiten/car-paint-picker.js +41 -41
- package/dist/assets/autospuiten/labels.js +7 -7
- package/dist/classes/cache/IndexedDbCache.js +1407 -1407
- package/dist/classes/cache/MemoryResponseCache.js +138 -138
- package/dist/classes/cache/index.js +5 -5
- package/dist/classes/cache/typedef.js +41 -41
- package/dist/classes/data/IterableTree.js +243 -243
- package/dist/classes/data/Selector.js +190 -190
- package/dist/classes/data/index.js +2 -2
- package/dist/classes/events/EventEmitter.js +275 -275
- package/dist/classes/events/index.js +2 -2
- package/dist/classes/index.js +4 -4
- package/dist/classes/logging/Logger.js +210 -210
- package/dist/classes/logging/constants.js +16 -16
- package/dist/classes/logging/index.js +4 -4
- package/dist/classes/logging/typedef.js +17 -17
- package/dist/classes/promise/HkPromise.js +377 -377
- package/dist/classes/promise/index.js +1 -1
- package/dist/classes/services/ServiceBase.js +463 -463
- package/dist/classes/services/ServiceManager.js +614 -614
- package/dist/classes/services/index.js +5 -5
- package/dist/classes/services/service-states.js +205 -205
- package/dist/classes/services/typedef.js +179 -179
- package/dist/classes/stores/SubscribersCount.js +107 -107
- package/dist/classes/stores/index.js +1 -1
- package/dist/classes/streams/LogTransformStream.js +19 -19
- package/dist/classes/streams/ServerEventsStore.js +110 -110
- package/dist/classes/streams/TimeStampSource.js +26 -26
- package/dist/classes/streams/index.js +3 -3
- package/dist/classes/svelte/audio/AudioLoader.svelte.js +58 -58
- package/dist/classes/svelte/audio/AudioScene.svelte.js +324 -324
- package/dist/classes/svelte/audio/mocks.js +35 -35
- package/dist/classes/svelte/finite-state-machine/FiniteStateMachine.svelte.js +133 -133
- package/dist/classes/svelte/finite-state-machine/index.js +1 -1
- package/dist/classes/svelte/image/ImageLoader.svelte.js +45 -45
- package/dist/classes/svelte/image/ImageScene.svelte.js +249 -249
- package/dist/classes/svelte/image/ImageVariantsLoader.svelte.js +152 -152
- package/dist/classes/svelte/image/index.js +4 -4
- package/dist/classes/svelte/image/mocks.js +35 -35
- package/dist/classes/svelte/image/typedef.js +8 -8
- package/dist/classes/svelte/index.js +14 -14
- package/dist/classes/svelte/loading-state-machine/LoadingStateMachine.svelte.js +109 -109
- package/dist/classes/svelte/loading-state-machine/constants.js +16 -16
- package/dist/classes/svelte/loading-state-machine/index.js +3 -3
- package/dist/classes/svelte/network-loader/NetworkLoader.svelte.js +338 -338
- package/dist/classes/svelte/network-loader/constants.js +3 -3
- package/dist/classes/svelte/network-loader/index.js +3 -3
- package/dist/classes/svelte/network-loader/mocks.js +30 -30
- package/dist/classes/svelte/network-loader/typedef.js +8 -8
- package/dist/components/area/HkArea.svelte +49 -49
- package/dist/components/area/HkGridArea.svelte +77 -77
- package/dist/components/area/index.js +2 -2
- package/dist/components/buttons/button/Button.svelte +82 -82
- package/dist/components/buttons/button-icon-steeze/SteezeIconButton.svelte +30 -30
- package/dist/components/buttons/button-text/TextButton.svelte +21 -21
- package/dist/components/buttons/index.js +3 -3
- package/dist/components/debug/debug-panel-design-scaling/DebugPanelDesignScaling.svelte +146 -146
- package/dist/components/debug/index.js +1 -1
- package/dist/components/drag-drop/DragController.js +44 -44
- package/dist/components/drag-drop/DragDropContext.svelte +111 -111
- package/dist/components/drag-drop/Draggable.svelte +519 -519
- package/dist/components/drag-drop/DropZoneArea.svelte +119 -119
- package/dist/components/drag-drop/DropZoneList.svelte +125 -125
- package/dist/components/drag-drop/{DropZone.svelte → Dropzone.svelte} +258 -258
- package/dist/components/drag-drop/actions.js +26 -26
- package/dist/components/drag-drop/drag-state.svelte.js +322 -322
- package/dist/components/drag-drop/index.js +7 -7
- package/dist/components/drag-drop/util.js +85 -85
- package/dist/components/hkdev/blocks/TextBlock.svelte +46 -46
- package/dist/components/hkdev/buttons/CheckButton.svelte +62 -62
- package/dist/components/icons/HkIcon.svelte +86 -86
- package/dist/components/icons/HkTabIcon.svelte +116 -116
- package/dist/components/icons/SteezeIcon.svelte +97 -97
- package/dist/components/icons/index.js +6 -6
- package/dist/components/icons/typedef.js +16 -16
- package/dist/components/index.js +2 -2
- package/dist/components/inputs/index.js +1 -1
- package/dist/components/inputs/text-input/TestTextInput.svelte__ +102 -102
- package/dist/components/inputs/text-input/TextInput.svelte +223 -223
- package/dist/components/inputs/text-input/TextInput.svelte___ +83 -83
- package/dist/components/inputs/text-input/assets/IconInvalid.svelte +14 -14
- package/dist/components/inputs/text-input/assets/IconValid.svelte +12 -12
- package/dist/components/layout/grid-layers/GridLayers.svelte +63 -63
- package/dist/components/layout/grid-layers/util.js +74 -74
- package/dist/components/layout/index.js +1 -1
- package/dist/components/panels/index.js +1 -1
- package/dist/components/panels/panel/Panel.svelte +43 -43
- package/dist/components/rows/index.js +3 -3
- package/dist/components/rows/panel-grid-row/PanelGridRow.svelte +104 -104
- package/dist/components/rows/panel-row-2/PanelRow2.svelte +40 -40
- package/dist/components/tab-bar/HkTabBar.state.svelte.js +149 -149
- package/dist/components/tab-bar/HkTabBar.svelte +74 -74
- package/dist/components/tab-bar/HkTabBarSelector.state.svelte.js +93 -93
- package/dist/components/tab-bar/HkTabBarSelector.svelte +49 -49
- package/dist/components/tab-bar/index.js +17 -17
- package/dist/components/tab-bar/typedef.js +11 -11
- package/dist/config/imagetools-config.js +189 -189
- package/dist/config/imagetools.d.ts +72 -72
- package/dist/constants/bases.js +13 -13
- package/dist/constants/errors/api.js +9 -9
- package/dist/constants/errors/generic.js +5 -5
- package/dist/constants/errors/index.js +3 -3
- package/dist/constants/errors/jwt.js +5 -5
- package/dist/constants/http/headers.js +6 -6
- package/dist/constants/http/index.js +2 -2
- package/dist/constants/http/methods.js +14 -14
- package/dist/constants/index.js +3 -3
- package/dist/constants/mime/application.js +5 -5
- package/dist/constants/mime/audio.js +13 -13
- package/dist/constants/mime/image.js +3 -3
- package/dist/constants/mime/index.js +4 -4
- package/dist/constants/mime/text.js +2 -2
- package/dist/constants/regexp/index.js +31 -31
- package/dist/constants/regexp/inspiratie.js__ +95 -95
- package/dist/constants/regexp/text.js +49 -49
- package/dist/constants/regexp/user.js +32 -32
- package/dist/constants/regexp/web.js +3 -3
- package/dist/constants/state-labels/drag-states.js +6 -6
- package/dist/constants/state-labels/drop-states.js +6 -6
- package/dist/constants/state-labels/input-states.js +11 -11
- package/dist/constants/state-labels/submit-states.js +4 -4
- package/dist/constants/time.js +28 -28
- package/dist/css/utilities.css +43 -43
- package/dist/design/design-config.js +73 -73
- package/dist/design/tailwind-theme-extend.js +158 -158
- package/dist/features/button-group/ButtonGroup.svelte +82 -82
- package/dist/features/button-group/typedef.js +10 -10
- package/dist/features/compare-left-right/CompareLeftRight.svelte +179 -179
- package/dist/features/compare-left-right/index.js +1 -1
- package/dist/features/game-box/GameBox.svelte +577 -577
- package/dist/features/game-box/gamebox.util.js +83 -83
- package/dist/features/hk-app-layout/HkAppLayout.state.svelte.js +25 -25
- package/dist/features/hk-app-layout/HkAppLayout.svelte +251 -251
- package/dist/features/image-box/ImageBox.svelte +210 -210
- package/dist/features/image-box/index.js +5 -5
- package/dist/features/image-box/typedef.js +32 -32
- package/dist/features/index.js +23 -23
- package/dist/features/presenter/ImageSlide.svelte +64 -64
- package/dist/features/presenter/Presenter.state.svelte.js +638 -638
- package/dist/features/presenter/Presenter.svelte +142 -142
- package/dist/features/presenter/constants.js +7 -7
- package/dist/features/presenter/index.js +10 -10
- package/dist/features/presenter/typedef.js +106 -106
- package/dist/features/presenter/util.js +210 -210
- package/dist/features/virtual-viewport/VirtualViewport.svelte +196 -196
- package/dist/logging/adapters/console.js +114 -114
- package/dist/logging/adapters/pino.js +60 -60
- package/dist/logging/constants.js +1 -1
- package/dist/logging/factories/client.js +21 -21
- package/dist/logging/factories/server.js +22 -22
- package/dist/logging/factories/universal.js +23 -23
- package/dist/logging/index.js +8 -8
- package/dist/schemas/index.js +1 -1
- package/dist/schemas/validate-url.js +180 -180
- package/dist/server/index.js +1 -1
- package/dist/server/logger.js +94 -94
- package/dist/states/index.js +1 -1
- package/dist/states/navigation.svelte.js +55 -55
- package/dist/stores/index.js +1 -1
- package/dist/stores/theme.js +80 -80
- package/dist/themes/hkdev/components/blocks/text-block.css +34 -41
- package/dist/themes/hkdev/components/boxes/game-box.css +11 -12
- package/dist/themes/hkdev/components/buttons/button-icon-steeze.css +22 -22
- package/dist/themes/hkdev/components/buttons/button-text.css +32 -32
- package/dist/themes/hkdev/components/buttons/button.css +146 -146
- package/dist/themes/hkdev/components/buttons/skip-button.css +5 -6
- package/dist/themes/hkdev/components/drag-drop/draggable.css +73 -73
- package/dist/themes/hkdev/components/drag-drop/drop-zone.css +58 -48
- package/dist/themes/hkdev/components/icons/icon-steeze.css +16 -22
- package/dist/themes/hkdev/components/inputs/text-input.css +102 -104
- package/dist/themes/hkdev/components/panels/panel.css +25 -27
- package/dist/themes/hkdev/components/rows/panel-grid-row.css +4 -6
- package/dist/themes/hkdev/components/rows/panel-row-2.css +5 -7
- package/dist/themes/hkdev/components.css +29 -53
- package/dist/themes/hkdev/debug.css +1 -1
- package/dist/themes/hkdev/global/layout.css +32 -39
- package/dist/themes/hkdev/global/on-colors.css +32 -53
- package/dist/themes/hkdev/globals.css +4 -11
- package/dist/themes/hkdev/responsive.css +12 -12
- package/dist/themes/hkdev/theme-ext.js +12 -15
- package/dist/themes/hkdev/theme.css +219 -0
- package/dist/themes/index.d.ts +1 -1
- package/dist/themes/index.js +1 -1
- package/dist/typedef/context.js +6 -6
- package/dist/typedef/drag.js +25 -25
- package/dist/typedef/drop.js +12 -12
- package/dist/typedef/image.js +38 -38
- package/dist/typedef/index.js +4 -4
- package/dist/util/array/index.js +436 -436
- package/dist/util/bases/base58.js +262 -262
- package/dist/util/bases/index.js +1 -1
- package/dist/util/compare/index.js +247 -247
- package/dist/util/css/css-vars.js +83 -83
- package/dist/util/css/index.js +1 -1
- package/dist/util/design-system/components/states.js +22 -22
- package/dist/util/design-system/css/clamp.js +66 -66
- package/dist/util/design-system/css/root-design-vars.js +102 -102
- package/dist/util/design-system/index.js +5 -5
- package/dist/util/design-system/layout/scaling.js +228 -228
- package/dist/util/design-system/skeleton.js +208 -208
- package/dist/util/design-system/tailwind.js +288 -288
- package/dist/util/env/index.js +9 -9
- package/dist/util/expect/arrays.js +47 -47
- package/dist/util/expect/index.js +259 -259
- package/dist/util/expect/primitives.js +55 -55
- package/dist/util/expect/url.js +60 -60
- package/dist/util/function/index.js +218 -218
- package/dist/util/geo/index.js +26 -26
- package/dist/util/http/caching.js +263 -263
- package/dist/util/http/errors.js +97 -97
- package/dist/util/http/headers.js +75 -75
- package/dist/util/http/http-request.js +578 -578
- package/dist/util/http/index.js +22 -22
- package/dist/util/http/json-request.js +224 -224
- package/dist/util/http/mocks.js +65 -65
- package/dist/util/http/response.js +294 -294
- package/dist/util/http/typedef.js +93 -93
- package/dist/util/http/url.js +52 -52
- package/dist/util/image/index.js +86 -86
- package/dist/util/index.js +2 -2
- package/dist/util/is/index.js +140 -140
- package/dist/util/iterate/index.js +234 -234
- package/dist/util/object/index.js +1361 -1361
- package/dist/util/singleton/index.js +97 -97
- package/dist/util/string/array-path.js +75 -75
- package/dist/util/string/convert.js +54 -54
- package/dist/util/string/fs.js +226 -226
- package/dist/util/string/index.js +5 -5
- package/dist/util/string/interpolate.js +61 -61
- package/dist/util/string/pad.js +10 -10
- package/dist/util/svelte/index.js +4 -4
- package/dist/util/svelte/loading/loading-tracker.svelte.js +108 -108
- package/dist/util/svelte/observe/index.js +49 -49
- package/dist/util/svelte/state-context/index.js +117 -117
- package/dist/util/svelte/wait/index.js +38 -38
- package/dist/util/sveltekit/index.js +1 -1
- package/dist/util/sveltekit/route-folders/index.js +101 -101
- package/dist/util/time/index.js +323 -323
- package/dist/util/unique/index.js +249 -249
- package/dist/valibot/date.js__ +10 -10
- package/dist/valibot/index.js +9 -9
- package/dist/valibot/url.js +95 -95
- package/dist/valibot/user.js +23 -23
- package/dist/zod/all.js +33 -33
- package/dist/zod/generic.js +11 -11
- package/dist/zod/javascript.js +32 -32
- package/dist/zod/user.js +16 -16
- package/dist/zod/web.js +52 -52
- package/package.json +132 -129
- package/dist/components/layout/grid-layers/GridLayers.svelte__heightFrom__ +0 -372
- package/dist/themes/hkdev/theme.d.ts +0 -234
- package/dist/themes/hkdev/theme.js +0 -235
- package/dist/util/http/test-data__/content-length-test-hkdigital-small.V4HfZyBQ.avif +0 -0
package/package.json
CHANGED
@@ -1,129 +1,132 @@
|
|
1
|
-
{
|
2
|
-
"name": "@hkdigital/lib-sveltekit",
|
3
|
-
"version": "0.2.
|
4
|
-
"author": {
|
5
|
-
"name": "HKdigital",
|
6
|
-
"url": "https://hkdigital.nl"
|
7
|
-
},
|
8
|
-
"license": "ISC",
|
9
|
-
"repository": {
|
10
|
-
"type": "git",
|
11
|
-
"url": "git+https://github.com/HKdigital/hkdigital--lib-sveltekit.git"
|
12
|
-
},
|
13
|
-
"keywords": [
|
14
|
-
"component-library",
|
15
|
-
"sveltekit",
|
16
|
-
"skeleton",
|
17
|
-
"tailwindcss",
|
18
|
-
"runed",
|
19
|
-
"valibot"
|
20
|
-
],
|
21
|
-
"scripts": {
|
22
|
-
"dev": "run-s svelte:sync dev:start",
|
23
|
-
"build": "run-s svelte:sync build:*",
|
24
|
-
"preview": "vite preview",
|
25
|
-
"check": "run-s svelte:sync check:run",
|
26
|
-
"check:watch": "run-s svelte:sync check:watch-run",
|
27
|
-
"format": "prettier --write .",
|
28
|
-
"lint": "run-s lint:*",
|
29
|
-
"test": "run-s test:unit-run",
|
30
|
-
"prepack": "run-s prepack:*",
|
31
|
-
"publish:npm": "run-s publish:npm:*",
|
32
|
-
"upgrade:hk": "run-s upgrade:hk:update pnpm:install",
|
33
|
-
"upgrade:all": "run-s upgrade:all:update pnpm:install",
|
34
|
-
"svelte:sync": "svelte-kit sync",
|
35
|
-
"dev:start": "vite dev",
|
36
|
-
"build:vite": "vite build",
|
37
|
-
"check:run": "svelte-check --tsconfig ./jsconfig.json",
|
38
|
-
"check:watch-run": "svelte-check --tsconfig ./jsconfig.json --watch",
|
39
|
-
"lint:prettier": "prettier --check .",
|
40
|
-
"lint:eslint": "eslint .",
|
41
|
-
"test:unit": "vitest",
|
42
|
-
"test:unit-run": "pnpm run test:unit -- --run",
|
43
|
-
"prepack:sync": "svelte-kit sync",
|
44
|
-
"prepack:build": "svelte-package",
|
45
|
-
"prepack:lint": "publint",
|
46
|
-
"publish:npm:version": "npm version patch",
|
47
|
-
"publish:npm:publish": "npm publish",
|
48
|
-
"publish:npm:push": "git push",
|
49
|
-
"upgrade:hk:update": "ncu --dep dev,optional,peer,prod '@hkdigital/*' -u",
|
50
|
-
"upgrade:all:update": "ncu --dep dev,optional,peer,prod -u",
|
51
|
-
"pnpm:install": "pnpm install"
|
52
|
-
},
|
53
|
-
"files": [
|
54
|
-
"dist",
|
55
|
-
"!dist/**/*.test.*",
|
56
|
-
"!dist/**/*.spec.*",
|
57
|
-
"!dist/**/testdata.*",
|
58
|
-
"!dist/**/*.testdata.*"
|
59
|
-
],
|
60
|
-
"sideEffects": [
|
61
|
-
"**/*.css"
|
62
|
-
],
|
63
|
-
"svelte": "./dist/index.js",
|
64
|
-
"types": "./dist/index.d.ts",
|
65
|
-
"type": "module",
|
66
|
-
"exports": {
|
67
|
-
".": {
|
68
|
-
"types": "./dist/index.d.ts",
|
69
|
-
"svelte": "./dist/index.js",
|
70
|
-
"default": "./dist/index.js"
|
71
|
-
},
|
72
|
-
"./*": "./dist/*",
|
73
|
-
"./typedef": "./dist/typedef/index.js"
|
74
|
-
},
|
75
|
-
"peerDependencies": {
|
76
|
-
"@eslint/js": "^9.28.0",
|
77
|
-
"@steeze-ui/heroicons": "^2.4.2",
|
78
|
-
"@sveltejs/kit": "^2.21.2",
|
79
|
-
"eslint-plugin-import": "^2.31.0",
|
80
|
-
"pino": "^9.7.0",
|
81
|
-
"pino-pretty": "^13.0.0",
|
82
|
-
"runed": "^0.23.1",
|
83
|
-
"svelte": "^5.33.16",
|
84
|
-
"svelte-preprocess": "^6.0.3",
|
85
|
-
"valibot": "^1.1.0",
|
86
|
-
"zod": "^3.24.2"
|
87
|
-
},
|
88
|
-
"devDependencies": {
|
89
|
-
"@eslint/js": "^9.28.0",
|
90
|
-
"@playwright/test": "^1.52.0",
|
91
|
-
"@skeletonlabs/skeleton": "3.0.0
|
92
|
-
"@skeletonlabs/skeleton-svelte": "1.
|
93
|
-
"@steeze-ui/heroicons": "^2.4.2",
|
94
|
-
"@sveltejs/adapter-auto": "^6.0.1",
|
95
|
-
"@sveltejs/package": "^2.3.11",
|
96
|
-
"@sveltejs/vite-plugin-svelte": "^5.1.0",
|
97
|
-
"@tailwindcss/typography": "^0.5.16",
|
98
|
-
"@testing-library/svelte": "^5.2.7",
|
99
|
-
"@testing-library/user-event": "^14.6.1",
|
100
|
-
"@types/eslint": "^9.6.1",
|
101
|
-
"autoprefixer": "^10.4.21",
|
102
|
-
"eslint": "^9.28.0",
|
103
|
-
"eslint-config-prettier": "^10.1.5",
|
104
|
-
"eslint-plugin-import": "^2.31.0",
|
105
|
-
"eslint-plugin-svelte": "^3.9.1",
|
106
|
-
"fake-indexeddb": "^6.0.0",
|
107
|
-
"globals": "^16.2.0",
|
108
|
-
"jsdom": "^26.1.0",
|
109
|
-
"npm-run-all": "^4.1.5",
|
110
|
-
"pino": "^9.7.0",
|
111
|
-
"pino-pretty": "^13.0.0",
|
112
|
-
"postcss": "^8.5.4",
|
113
|
-
"postcss-mixins": "^11.0.3",
|
114
|
-
"prettier": "^3.5.3",
|
115
|
-
"prettier-plugin-svelte": "^3.4.0",
|
116
|
-
"prettier-plugin-tailwindcss": "^0.6.12",
|
117
|
-
"publint": "^0.3.12",
|
118
|
-
"standardized-audio-context-mock": "^9.7.22",
|
119
|
-
"svelte": "^5.33.16",
|
120
|
-
"svelte-check": "^4.2.1",
|
121
|
-
"svelte-preprocess": "^6.0.3",
|
122
|
-
"tailwindcss": "^
|
123
|
-
"typescript": "^5.8.3",
|
124
|
-
"vite": "^6.3.5",
|
125
|
-
"vite-imagetools": "^7.1.0",
|
126
|
-
"vitest": "^3.2.2",
|
127
|
-
"zod": "^3.24.2"
|
128
|
-
}
|
129
|
-
|
1
|
+
{
|
2
|
+
"name": "@hkdigital/lib-sveltekit",
|
3
|
+
"version": "0.2.21",
|
4
|
+
"author": {
|
5
|
+
"name": "HKdigital",
|
6
|
+
"url": "https://hkdigital.nl"
|
7
|
+
},
|
8
|
+
"license": "ISC",
|
9
|
+
"repository": {
|
10
|
+
"type": "git",
|
11
|
+
"url": "git+https://github.com/HKdigital/hkdigital--lib-sveltekit.git"
|
12
|
+
},
|
13
|
+
"keywords": [
|
14
|
+
"component-library",
|
15
|
+
"sveltekit",
|
16
|
+
"skeleton",
|
17
|
+
"tailwindcss",
|
18
|
+
"runed",
|
19
|
+
"valibot"
|
20
|
+
],
|
21
|
+
"scripts": {
|
22
|
+
"dev": "run-s svelte:sync dev:start",
|
23
|
+
"build": "run-s svelte:sync build:*",
|
24
|
+
"preview": "vite preview",
|
25
|
+
"check": "run-s svelte:sync check:run",
|
26
|
+
"check:watch": "run-s svelte:sync check:watch-run",
|
27
|
+
"format": "prettier --write .",
|
28
|
+
"lint": "run-s lint:*",
|
29
|
+
"test": "run-s test:unit-run",
|
30
|
+
"prepack": "run-s prepack:*",
|
31
|
+
"publish:npm": "run-s publish:npm:*",
|
32
|
+
"upgrade:hk": "run-s upgrade:hk:update pnpm:install",
|
33
|
+
"upgrade:all": "run-s upgrade:all:update pnpm:install",
|
34
|
+
"svelte:sync": "svelte-kit sync",
|
35
|
+
"dev:start": "vite dev",
|
36
|
+
"build:vite": "vite build",
|
37
|
+
"check:run": "svelte-check --tsconfig ./jsconfig.json",
|
38
|
+
"check:watch-run": "svelte-check --tsconfig ./jsconfig.json --watch",
|
39
|
+
"lint:prettier": "prettier --check .",
|
40
|
+
"lint:eslint": "eslint .",
|
41
|
+
"test:unit": "vitest",
|
42
|
+
"test:unit-run": "pnpm run test:unit -- --run",
|
43
|
+
"prepack:sync": "svelte-kit sync",
|
44
|
+
"prepack:build": "svelte-package",
|
45
|
+
"prepack:lint": "publint",
|
46
|
+
"publish:npm:version": "npm version patch",
|
47
|
+
"publish:npm:publish": "npm publish",
|
48
|
+
"publish:npm:push": "git push",
|
49
|
+
"upgrade:hk:update": "ncu --dep dev,optional,peer,prod '@hkdigital/*' -u",
|
50
|
+
"upgrade:all:update": "ncu --dep dev,optional,peer,prod -u",
|
51
|
+
"pnpm:install": "pnpm install"
|
52
|
+
},
|
53
|
+
"files": [
|
54
|
+
"dist",
|
55
|
+
"!dist/**/*.test.*",
|
56
|
+
"!dist/**/*.spec.*",
|
57
|
+
"!dist/**/testdata.*",
|
58
|
+
"!dist/**/*.testdata.*"
|
59
|
+
],
|
60
|
+
"sideEffects": [
|
61
|
+
"**/*.css"
|
62
|
+
],
|
63
|
+
"svelte": "./dist/index.js",
|
64
|
+
"types": "./dist/index.d.ts",
|
65
|
+
"type": "module",
|
66
|
+
"exports": {
|
67
|
+
".": {
|
68
|
+
"types": "./dist/index.d.ts",
|
69
|
+
"svelte": "./dist/index.js",
|
70
|
+
"default": "./dist/index.js"
|
71
|
+
},
|
72
|
+
"./*": "./dist/*",
|
73
|
+
"./typedef": "./dist/typedef/index.js"
|
74
|
+
},
|
75
|
+
"peerDependencies": {
|
76
|
+
"@eslint/js": "^9.28.0",
|
77
|
+
"@steeze-ui/heroicons": "^2.4.2",
|
78
|
+
"@sveltejs/kit": "^2.21.2",
|
79
|
+
"eslint-plugin-import": "^2.31.0",
|
80
|
+
"pino": "^9.7.0",
|
81
|
+
"pino-pretty": "^13.0.0",
|
82
|
+
"runed": "^0.23.1",
|
83
|
+
"svelte": "^5.33.16",
|
84
|
+
"svelte-preprocess": "^6.0.3",
|
85
|
+
"valibot": "^1.1.0",
|
86
|
+
"zod": "^3.24.2"
|
87
|
+
},
|
88
|
+
"devDependencies": {
|
89
|
+
"@eslint/js": "^9.28.0",
|
90
|
+
"@playwright/test": "^1.52.0",
|
91
|
+
"@skeletonlabs/skeleton": "3.0.0",
|
92
|
+
"@skeletonlabs/skeleton-svelte": "1.2.3",
|
93
|
+
"@steeze-ui/heroicons": "^2.4.2",
|
94
|
+
"@sveltejs/adapter-auto": "^6.0.1",
|
95
|
+
"@sveltejs/package": "^2.3.11",
|
96
|
+
"@sveltejs/vite-plugin-svelte": "^5.1.0",
|
97
|
+
"@tailwindcss/typography": "^0.5.16",
|
98
|
+
"@testing-library/svelte": "^5.2.7",
|
99
|
+
"@testing-library/user-event": "^14.6.1",
|
100
|
+
"@types/eslint": "^9.6.1",
|
101
|
+
"autoprefixer": "^10.4.21",
|
102
|
+
"eslint": "^9.28.0",
|
103
|
+
"eslint-config-prettier": "^10.1.5",
|
104
|
+
"eslint-plugin-import": "^2.31.0",
|
105
|
+
"eslint-plugin-svelte": "^3.9.1",
|
106
|
+
"fake-indexeddb": "^6.0.0",
|
107
|
+
"globals": "^16.2.0",
|
108
|
+
"jsdom": "^26.1.0",
|
109
|
+
"npm-run-all": "^4.1.5",
|
110
|
+
"pino": "^9.7.0",
|
111
|
+
"pino-pretty": "^13.0.0",
|
112
|
+
"postcss": "^8.5.4",
|
113
|
+
"postcss-mixins": "^11.0.3",
|
114
|
+
"prettier": "^3.5.3",
|
115
|
+
"prettier-plugin-svelte": "^3.4.0",
|
116
|
+
"prettier-plugin-tailwindcss": "^0.6.12",
|
117
|
+
"publint": "^0.3.12",
|
118
|
+
"standardized-audio-context-mock": "^9.7.22",
|
119
|
+
"svelte": "^5.33.16",
|
120
|
+
"svelte-check": "^4.2.1",
|
121
|
+
"svelte-preprocess": "^6.0.3",
|
122
|
+
"tailwindcss": "^4.1.10",
|
123
|
+
"typescript": "^5.8.3",
|
124
|
+
"vite": "^6.3.5",
|
125
|
+
"vite-imagetools": "^7.1.0",
|
126
|
+
"vitest": "^3.2.2",
|
127
|
+
"zod": "^3.24.2"
|
128
|
+
},
|
129
|
+
"dependencies": {
|
130
|
+
"@tailwindcss/postcss": "^4.1.11"
|
131
|
+
}
|
132
|
+
}
|
@@ -1,372 +0,0 @@
|
|
1
|
-
<script>
|
2
|
-
import { onMount, onDestroy } from 'svelte';
|
3
|
-
import { setupLayerObserver, measureTargetLayer } from './util.js';
|
4
|
-
|
5
|
-
/**
|
6
|
-
* # GridLayers Component
|
7
|
-
*
|
8
|
-
* A Svelte 5 component that creates a layered grid layout where all
|
9
|
-
* children occupy the same grid area, allowing for overlapping content with
|
10
|
-
* precise positioning control.
|
11
|
-
*
|
12
|
-
* ## Overview
|
13
|
-
*
|
14
|
-
* GridLayers uses CSS Grid to stack multiple elements in the same grid cell
|
15
|
-
* (1x1 grid), enabling layered layouts without absolute positioning on the
|
16
|
-
* children. This approach maintains the natural flow and sizing behavior of
|
17
|
-
* grid items while allowing them to overlap.
|
18
|
-
*
|
19
|
-
* ## Height Control
|
20
|
-
*
|
21
|
-
* The component offers two methods for controlling height:
|
22
|
-
*
|
23
|
-
* ### 1. Fixed Height (default)
|
24
|
-
*
|
25
|
-
* Use the `height` prop with Tailwind classes:
|
26
|
-
* ```svelte
|
27
|
-
* <GridLayers height="h-[500px]">
|
28
|
-
* <!-- content -->
|
29
|
-
* </GridLayers>
|
30
|
-
* ```
|
31
|
-
*
|
32
|
-
* ### 2. Dynamic Height
|
33
|
-
* Use the `heightFrom` prop to make the container's height match a specific
|
34
|
-
* child layer:
|
35
|
-
*
|
36
|
-
* ```svelte
|
37
|
-
* <GridLayers heightFrom="content">
|
38
|
-
* <div data-layer="content">
|
39
|
-
* <!-- This layer's height determines the container height -->
|
40
|
-
* </div>
|
41
|
-
* <div data-layer="overlay">
|
42
|
-
* <!-- Other layers adapt to the container -->
|
43
|
-
* </div>
|
44
|
-
* </GridLayers>
|
45
|
-
* ```
|
46
|
-
*
|
47
|
-
* The `heightFrom` value should match a child's `data-layer` attribute.
|
48
|
-
* The component will:
|
49
|
-
* - Initially render invisibly to measure the target layer
|
50
|
-
* - Apply the measured height to the container
|
51
|
-
* - Watch for changes and update automatically
|
52
|
-
*
|
53
|
-
* ## Positioning Layers
|
54
|
-
*
|
55
|
-
* Each child element can be positioned within the grid cell using Tailwind's
|
56
|
-
* alignment utilities:
|
57
|
-
*
|
58
|
-
* ### justify-self (Horizontal Alignment)
|
59
|
-
* - `justify-self-start` - Align to the left
|
60
|
-
* - `justify-self-center` - Center horizontally
|
61
|
-
* - `justify-self-end` - Align to the right
|
62
|
-
* - `justify-self-stretch` - Stretch to full width (default)
|
63
|
-
*
|
64
|
-
* ### self (Vertical Alignment)
|
65
|
-
* - `self-start` - Align to the top
|
66
|
-
* - `self-center` - Center vertically
|
67
|
-
* - `self-end` - Align to the bottom
|
68
|
-
* - `self-stretch` - Stretch to full height (default)
|
69
|
-
*
|
70
|
-
* ### Combining Positions
|
71
|
-
* ```svelte
|
72
|
-
* <GridLayers height="h-[400px]">
|
73
|
-
* <div class="justify-self-start self-start">Top Left</div>
|
74
|
-
* <div class="justify-self-center self-center">Centered</div>
|
75
|
-
* <div class="justify-self-end self-end">Bottom Right</div>
|
76
|
-
* </GridLayers>
|
77
|
-
* ```
|
78
|
-
*
|
79
|
-
* ### Fine-tuning with Margins
|
80
|
-
* For precise positioning adjustments, use margins:
|
81
|
-
* ```svelte
|
82
|
-
* <div class="justify-self-end self-end mr-4 mb-4">
|
83
|
-
* <!-- Positioned at bottom-right with 1rem spacing -->
|
84
|
-
* </div>
|
85
|
-
* ```
|
86
|
-
*
|
87
|
-
* ## Technical Implementation
|
88
|
-
*
|
89
|
-
* ### The Grid Container
|
90
|
-
* The inner grid container uses `absolute inset-0` which:
|
91
|
-
* - Positions it absolutely within the relative parent
|
92
|
-
* - `inset-0` is shorthand for `top: 0, right: 0, bottom: 0, left: 0`
|
93
|
-
* - Makes the grid fill the entire parent container
|
94
|
-
* - Ensures the grid respects the parent's dimensions (fixed or dynamic)
|
95
|
-
*
|
96
|
-
* This approach creates a stable positioning context while maintaining the
|
97
|
-
* parent's flow in the document.
|
98
|
-
*
|
99
|
-
* ### Grid Structure
|
100
|
-
* All children are assigned to the same grid cell:
|
101
|
-
* ```css
|
102
|
-
* grid-template-columns: 1fr;
|
103
|
-
* grid-template-rows: 1fr;
|
104
|
-
* grid-column: 1;
|
105
|
-
* grid-row: 1;
|
106
|
-
* ```
|
107
|
-
*
|
108
|
-
* ## Overflow Behavior
|
109
|
-
*
|
110
|
-
* When a layer's content exceeds the container bounds:
|
111
|
-
*
|
112
|
-
* ### Default Behavior
|
113
|
-
* - Content will overflow and be visible outside the container
|
114
|
-
* - This can break layouts or create unwanted scrollbars
|
115
|
-
*
|
116
|
-
* ### Controlling Overflow
|
117
|
-
* Add overflow utilities to the container:
|
118
|
-
* ```svelte
|
119
|
-
* <!-- Hide overflow -->
|
120
|
-
* <GridLayers classes="overflow-hidden">
|
121
|
-
*
|
122
|
-
* <!-- Scroll if needed -->
|
123
|
-
* <GridLayers classes="overflow-auto">
|
124
|
-
*
|
125
|
-
* <!-- Scroll specific layer -->
|
126
|
-
* <GridLayers>
|
127
|
-
* <div class="overflow-auto">
|
128
|
-
* <!-- Scrollable content -->
|
129
|
-
* </div>
|
130
|
-
* </GridLayers>
|
131
|
-
* ```
|
132
|
-
*
|
133
|
-
* ### Best Practices for Overflow
|
134
|
-
* 1. Use `overflow-hidden` on the container when layers should be clipped
|
135
|
-
* 2. Apply `overflow-auto` to specific layers that need scrolling
|
136
|
-
* 3. Consider using `max-h-*` classes on content layers
|
137
|
-
* 4. Test with different content sizes to ensure proper behavior
|
138
|
-
*
|
139
|
-
* ## Z-Index Stacking
|
140
|
-
*
|
141
|
-
* Layers have a base `z-index: 0` and stack in DOM order. Control stacking with:
|
142
|
-
* ```svelte
|
143
|
-
* <div class="z-10">Top layer</div>
|
144
|
-
* <div class="z-0">Base layer</div>
|
145
|
-
* <div class="z-20">Topmost layer</div>
|
146
|
-
* ```
|
147
|
-
*
|
148
|
-
* ## Common Patterns
|
149
|
-
*
|
150
|
-
* ### Header/Content/Footer
|
151
|
-
* ```svelte
|
152
|
-
* <GridLayers heightFrom="content">
|
153
|
-
* <div data-layer="header" class="self-start">
|
154
|
-
* <header>Fixed header</header>
|
155
|
-
* </div>
|
156
|
-
* <div data-layer="content" class="self-center">
|
157
|
-
* <main>Dynamic content</main>
|
158
|
-
* </div>
|
159
|
-
* <div data-layer="footer" class="self-end">
|
160
|
-
* <footer>Fixed footer</footer>
|
161
|
-
* </div>
|
162
|
-
* </GridLayers>
|
163
|
-
* ```
|
164
|
-
*
|
165
|
-
* ### Centered Overlay
|
166
|
-
* ```svelte
|
167
|
-
* <GridLayers height="h-screen">
|
168
|
-
* <div class="z-0">
|
169
|
-
* <img src="background.jpg" class="w-full h-full object-cover" />
|
170
|
-
* </div>
|
171
|
-
* <div class="z-10 justify-self-center self-center">
|
172
|
-
* <div class="bg-white p-8 rounded shadow-lg">
|
173
|
-
* Centered content over background
|
174
|
-
* </div>
|
175
|
-
* </div>
|
176
|
-
* </GridLayers>
|
177
|
-
* ```
|
178
|
-
*
|
179
|
-
* ### Corner Badges
|
180
|
-
* ```svelte
|
181
|
-
* <GridLayers height="h-64">
|
182
|
-
* <div class="justify-self-end self-start m-4 z-10">
|
183
|
-
* <span class="badge">New</span>
|
184
|
-
* </div>
|
185
|
-
* <div>
|
186
|
-
* Main content
|
187
|
-
* </div>
|
188
|
-
* </GridLayers>
|
189
|
-
* ```
|
190
|
-
*/
|
191
|
-
|
192
|
-
/**
|
193
|
-
* @type {{
|
194
|
-
* base?: string,
|
195
|
-
* bg?: string,
|
196
|
-
* padding?: string,
|
197
|
-
* margin?: string,
|
198
|
-
* height?: string,
|
199
|
-
* classes?: string,
|
200
|
-
* style?: string,
|
201
|
-
* cellBase?: string,
|
202
|
-
* cellBg?: string,
|
203
|
-
* cellPadding?: string,
|
204
|
-
* cellMargin?: string,
|
205
|
-
* cellClasses?: string,
|
206
|
-
* cellStyle?: string,
|
207
|
-
* heightFrom?: string|null,
|
208
|
-
* children: import('svelte').Snippet,
|
209
|
-
* cellAttrs?: { [attr: string]: any },
|
210
|
-
* [attr: string]: any
|
211
|
-
* }}
|
212
|
-
*/
|
213
|
-
const {
|
214
|
-
// Style
|
215
|
-
base = '',
|
216
|
-
bg = '',
|
217
|
-
padding = '',
|
218
|
-
margin = '',
|
219
|
-
height = 'h-full',
|
220
|
-
classes = '',
|
221
|
-
style = '',
|
222
|
-
cellBase = '',
|
223
|
-
cellBg = '',
|
224
|
-
cellPadding = '',
|
225
|
-
cellMargin = '',
|
226
|
-
cellClasses = '',
|
227
|
-
cellStyle = '',
|
228
|
-
|
229
|
-
// Behavior
|
230
|
-
heightFrom = null,
|
231
|
-
|
232
|
-
// Props
|
233
|
-
cellAttrs = {},
|
234
|
-
children,
|
235
|
-
|
236
|
-
// Attributes
|
237
|
-
...attrs
|
238
|
-
} = $props();
|
239
|
-
|
240
|
-
// Component state
|
241
|
-
let gridContent = $state(null);
|
242
|
-
let calculatedHeight = $state(0);
|
243
|
-
let observer = $state(null);
|
244
|
-
|
245
|
-
// Start with true if heightFrom is provided
|
246
|
-
let isFirstRender = $state(heightFrom !== null);
|
247
|
-
|
248
|
-
let preCalculatedHeight = $state(0);
|
249
|
-
|
250
|
-
// Derived container style that updates reactively when dependencies change
|
251
|
-
let containerStyle = $derived.by(() => {
|
252
|
-
const styles = [];
|
253
|
-
|
254
|
-
if (style) {
|
255
|
-
styles.push(style);
|
256
|
-
}
|
257
|
-
|
258
|
-
if (heightFrom && calculatedHeight > 0) {
|
259
|
-
styles.push(`height: ${calculatedHeight}px;`);
|
260
|
-
}
|
261
|
-
|
262
|
-
return styles.join(' ');
|
263
|
-
});
|
264
|
-
|
265
|
-
/**
|
266
|
-
* Handler for height changes detected by the observer
|
267
|
-
* @param {number} newHeight - The new calculated height
|
268
|
-
*/
|
269
|
-
function handleHeightChange(newHeight) {
|
270
|
-
calculatedHeight = newHeight;
|
271
|
-
}
|
272
|
-
|
273
|
-
/**
|
274
|
-
* Initialize height measurement and observation
|
275
|
-
*/
|
276
|
-
function initializeHeightTracking() {
|
277
|
-
if (!heightFrom || !gridContent) return;
|
278
|
-
|
279
|
-
// Measure the layer initially
|
280
|
-
const { element, height } = measureTargetLayer(gridContent, heightFrom);
|
281
|
-
|
282
|
-
if (element) {
|
283
|
-
calculatedHeight = height;
|
284
|
-
|
285
|
-
// Setup observer for future changes
|
286
|
-
observer = setupLayerObserver(element, handleHeightChange);
|
287
|
-
}
|
288
|
-
}
|
289
|
-
|
290
|
-
// Initialize on mount with the two-pass rendering approach
|
291
|
-
onMount(() => {
|
292
|
-
if (heightFrom) {
|
293
|
-
// First render: measure invisibly
|
294
|
-
requestAnimationFrame(() => {
|
295
|
-
if (gridContent) {
|
296
|
-
const { element, height } = measureTargetLayer(gridContent, heightFrom);
|
297
|
-
|
298
|
-
if (element) {
|
299
|
-
preCalculatedHeight = height;
|
300
|
-
|
301
|
-
// Second render: show with correct height
|
302
|
-
requestAnimationFrame(() => {
|
303
|
-
calculatedHeight = preCalculatedHeight;
|
304
|
-
isFirstRender = false;
|
305
|
-
|
306
|
-
// Setup observer for future changes
|
307
|
-
observer = setupLayerObserver(element, handleHeightChange);
|
308
|
-
});
|
309
|
-
} else {
|
310
|
-
// No target layer found, just show the component
|
311
|
-
isFirstRender = false;
|
312
|
-
}
|
313
|
-
} else {
|
314
|
-
// No grid content, just show the component
|
315
|
-
isFirstRender = false;
|
316
|
-
}
|
317
|
-
});
|
318
|
-
} else {
|
319
|
-
// No heightFrom, no need for measurement
|
320
|
-
isFirstRender = false;
|
321
|
-
}
|
322
|
-
});
|
323
|
-
|
324
|
-
// Effect to re-setup observer when either the target layer or heightFrom changes
|
325
|
-
$effect(() => {
|
326
|
-
// Only handle changes after initial setup
|
327
|
-
if (!isFirstRender && heightFrom && gridContent && !observer) {
|
328
|
-
initializeHeightTracking();
|
329
|
-
}
|
330
|
-
});
|
331
|
-
|
332
|
-
// Clean up on destroy
|
333
|
-
onDestroy(() => {
|
334
|
-
if (observer) {
|
335
|
-
observer.disconnect();
|
336
|
-
observer = null;
|
337
|
-
}
|
338
|
-
});
|
339
|
-
|
340
|
-
</script>
|
341
|
-
|
342
|
-
<div
|
343
|
-
data-component="grid-layers"
|
344
|
-
class="relative {isFirstRender ? 'invisible' : ''} {base} {bg} {heightFrom ? '' : height} {classes} {margin} {padding}"
|
345
|
-
style={containerStyle}
|
346
|
-
{...attrs}
|
347
|
-
>
|
348
|
-
<div
|
349
|
-
data-section="grid"
|
350
|
-
bind:this={gridContent}
|
351
|
-
class="absolute inset-0 grid {cellBase} {cellBg} {cellPadding} {cellMargin} {cellClasses}"
|
352
|
-
style={cellStyle}
|
353
|
-
{...cellAttrs}
|
354
|
-
>
|
355
|
-
{@render children()}
|
356
|
-
</div>
|
357
|
-
</div>
|
358
|
-
|
359
|
-
<style>
|
360
|
-
/* All children of the layer share the same grid area
|
361
|
-
but aren't absolutely positioned */
|
362
|
-
[data-section='grid'] {
|
363
|
-
grid-template-columns: 1fr;
|
364
|
-
grid-template-rows: 1fr;
|
365
|
-
}
|
366
|
-
|
367
|
-
[data-section='grid'] > :global(*) {
|
368
|
-
grid-column: 1;
|
369
|
-
grid-row: 1;
|
370
|
-
z-index: 0; /* Base z-index to allow explicit stacking order */
|
371
|
-
}
|
372
|
-
</style>
|