@toa.io/extensions.configuration 1.0.0-alpha.274 → 1.0.0-alpha.276
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/CHANGELOG.md +29 -0
- package/components/configuration.values/operations/create.d.ts +16 -0
- package/components/configuration.values/operations/create.js +58 -0
- package/components/configuration.values/operations/create.js.map +1 -0
- package/components/configuration.values/operations/fetch.d.ts +11 -0
- package/components/configuration.values/operations/fetch.js +17 -0
- package/components/configuration.values/operations/fetch.js.map +1 -0
- package/components/configuration.values/operations/get.d.ts +17 -0
- package/components/configuration.values/operations/get.js +23 -0
- package/components/configuration.values/operations/get.js.map +1 -0
- package/components/configuration.values/operations/lib/map.d.ts +11 -0
- package/components/configuration.values/operations/lib/map.js +26 -0
- package/components/configuration.values/operations/lib/map.js.map +1 -0
- package/components/configuration.values/operations/lib/map.test.d.ts +1 -0
- package/components/configuration.values/operations/lib/map.test.js +26 -0
- package/components/configuration.values/operations/lib/map.test.js.map +1 -0
- package/components/configuration.values/operations/lib/resolve.d.ts +27 -0
- package/components/configuration.values/operations/lib/resolve.js +28 -0
- package/components/configuration.values/operations/lib/resolve.js.map +1 -0
- package/components/configuration.values/operations/list.d.ts +10 -0
- package/components/configuration.values/operations/list.js +15 -0
- package/components/configuration.values/operations/list.js.map +1 -0
- package/components/configuration.values/operations/tsconfig.tsbuildinfo +1 -0
- package/features/site/favicon.ico +0 -0
- package/features/ui.feature +8 -0
- package/package.json +2 -2
- package/source/Aspect.ts +7 -2
- package/source/UI.ts +16 -1
- package/source/deployment.ts +1 -1
- package/transpiled/Aspect.js +3 -2
- package/transpiled/Aspect.js.map +1 -1
- package/transpiled/UI.js +14 -1
- package/transpiled/UI.js.map +1 -1
- package/transpiled/deployment.d.ts +1 -1
- package/transpiled/tsconfig.tsbuildinfo +1 -1
- package/ui/dist/_app/env.js +1 -0
- package/ui/dist/_app/immutable/assets/0.CNS8Cqhc.css +2 -0
- package/ui/dist/_app/immutable/assets/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2 +0 -0
- package/ui/dist/_app/immutable/assets/inter-cyrillic-wght-normal.DqGufNeO.woff2 +0 -0
- package/ui/dist/_app/immutable/assets/inter-greek-ext-wght-normal.DlzME5K_.woff2 +0 -0
- package/ui/dist/_app/immutable/assets/inter-greek-wght-normal.CkhJZR-_.woff2 +0 -0
- package/ui/dist/_app/immutable/assets/inter-latin-ext-wght-normal.DO1Apj_S.woff2 +0 -0
- package/ui/dist/_app/immutable/assets/inter-latin-wght-normal.Dx4kXJAl.woff2 +0 -0
- package/ui/dist/_app/immutable/assets/inter-vietnamese-wght-normal.CBcvBZtf.woff2 +0 -0
- package/ui/dist/_app/immutable/assets/ui.BghF56l_.css +1 -0
- package/ui/dist/_app/immutable/chunks/Bjy-W4x2.js +81 -0
- package/ui/dist/_app/immutable/chunks/CDKtbN4n.js +6 -0
- package/ui/dist/_app/immutable/chunks/CcD_ISxM.js +3 -0
- package/ui/dist/_app/immutable/chunks/Chb3af1a.js +1 -0
- package/ui/dist/_app/immutable/chunks/Cov6-56A.js +50 -0
- package/ui/dist/_app/immutable/chunks/E7oj41Za.js +1 -0
- package/ui/dist/_app/immutable/chunks/MOpxGoVO.js +8 -0
- package/ui/dist/_app/immutable/chunks/xihTtKlq.js +1 -0
- package/ui/dist/_app/immutable/entry/app.B9v2AwU_.js +2 -0
- package/ui/dist/_app/immutable/entry/start.B97KALv1.js +1 -0
- package/ui/dist/_app/immutable/nodes/0.DKSa6mGa.js +1 -0
- package/ui/dist/_app/immutable/nodes/1.Cnu_jAWf.js +1 -0
- package/ui/dist/_app/immutable/nodes/2.Dg1zeC2b.js +1 -0
- package/ui/dist/_app/immutable/nodes/3.QCbZIibO.js +1 -0
- package/ui/dist/_app/immutable/nodes/4.1bG6DC_9.js +1 -0
- package/ui/dist/_app/version.json +1 -0
- package/ui/dist/apple-touch-icon.png +0 -0
- package/ui/dist/favicon-96x96.png +0 -0
- package/ui/dist/favicon.ico +0 -0
- package/ui/dist/index.html +52 -0
- package/ui/.agents/skills/antcn/SKILL.md +0 -91
- package/ui/.agents/skills/antcn/references/analytics.md +0 -78
- package/ui/.agents/skills/antcn/references/bridge.md +0 -41
- package/ui/.agents/skills/antcn/references/clipboard.md +0 -23
- package/ui/.agents/skills/antcn/references/dismissable.md +0 -75
- package/ui/.agents/skills/antcn/references/dropdown.md +0 -153
- package/ui/.agents/skills/antcn/references/fragments.md +0 -29
- package/ui/.agents/skills/antcn/references/fullscreen.md +0 -157
- package/ui/.agents/skills/antcn/references/geo.md +0 -27
- package/ui/.agents/skills/antcn/references/globals.md +0 -31
- package/ui/.agents/skills/antcn/references/grammatical-form.md +0 -69
- package/ui/.agents/skills/antcn/references/hints.md +0 -44
- package/ui/.agents/skills/antcn/references/hold.md +0 -34
- package/ui/.agents/skills/antcn/references/iam.md +0 -117
- package/ui/.agents/skills/antcn/references/input-form.md +0 -34
- package/ui/.agents/skills/antcn/references/locale.md +0 -66
- package/ui/.agents/skills/antcn/references/net.md +0 -33
- package/ui/.agents/skills/antcn/references/panel.md +0 -44
- package/ui/.agents/skills/antcn/references/passkeys.md +0 -27
- package/ui/.agents/skills/antcn/references/payments.md +0 -99
- package/ui/.agents/skills/antcn/references/realtime.md +0 -69
- package/ui/.agents/skills/antcn/references/scrollable.md +0 -39
- package/ui/.agents/skills/antcn/references/selector.md +0 -71
- package/ui/.agents/skills/antcn/references/shake.md +0 -36
- package/ui/.agents/skills/antcn/references/share.md +0 -28
- package/ui/.agents/skills/antcn/references/shell.md +0 -139
- package/ui/.agents/skills/antcn/references/stack.md +0 -53
- package/ui/.agents/skills/antcn/references/system.md +0 -149
- package/ui/.agents/skills/antcn/references/taptap.md +0 -28
- package/ui/.agents/skills/antcn/references/tools.md +0 -68
- package/ui/.agents/skills/antcn/references/transmission.md +0 -96
- package/ui/.agents/skills/shadcn-svelte/SKILL.md +0 -227
- package/ui/.agents/skills/shadcn-svelte/agents/openai.yml +0 -5
- package/ui/.agents/skills/shadcn-svelte/assets/shadcn-svelte-small.png +0 -0
- package/ui/.agents/skills/shadcn-svelte/assets/shadcn-svelte.png +0 -0
- package/ui/.agents/skills/shadcn-svelte/cli.md +0 -166
- package/ui/.agents/skills/shadcn-svelte/customization.md +0 -213
- package/ui/.agents/skills/shadcn-svelte/evals/evals.json +0 -47
- package/ui/.agents/skills/shadcn-svelte/rules/composition.md +0 -244
- package/ui/.agents/skills/shadcn-svelte/rules/forms.md +0 -234
- package/ui/.agents/skills/shadcn-svelte/rules/icons.md +0 -107
- package/ui/.agents/skills/shadcn-svelte/rules/styling.md +0 -195
- package/ui/.agents/skills/svas/SKILL.md +0 -169
- package/ui/.agents/skills/svas/references/patterns.md +0 -95
- package/ui/.agents/skills/svintl/SKILL.md +0 -176
- package/ui/.claude/settings.json +0 -15
- package/ui/.codex/hooks.json +0 -15
- package/ui/.cursor/hooks.json +0 -11
- package/ui/.env.example +0 -1
- package/ui/.prettierrc +0 -9
- package/ui/.vscode/extensions.json +0 -7
- package/ui/.vscode/settings.json +0 -27
- package/ui/AGENTS.md +0 -51
- package/ui/architecture.md +0 -390
- package/ui/components.json +0 -20
- package/ui/eslint.config.js +0 -152
- package/ui/features/base.ts +0 -2
- package/ui/features/boot.feature +0 -5
- package/ui/features/steps/authentication.ts +0 -34
- package/ui/features/steps/navigaton.ts +0 -37
- package/ui/features/steps/typing.ts +0 -24
- package/ui/package-lock.json +0 -8173
- package/ui/package.json +0 -76
- package/ui/playwright.config.ts +0 -13
- package/ui/skills-lock.json +0 -30
- package/ui/src/@/configuration/index.ts +0 -1
- package/ui/src/@/configuration/svc/create.ts +0 -29
- package/ui/src/@/configuration/svc/index.ts +0 -3
- package/ui/src/@/configuration/svc/net/Configuration.ts +0 -18
- package/ui/src/@/configuration/svc/net/index.ts +0 -2
- package/ui/src/@/configuration/svc/net/interface.ts +0 -35
- package/ui/src/@/configuration/svc/store.ts +0 -14
- package/ui/src/@/configuration/ui/Configurations.svelte +0 -85
- package/ui/src/@/configuration/ui/Configurations.ts +0 -5
- package/ui/src/@/configuration/ui/Create.svelte +0 -64
- package/ui/src/@/configuration/ui/Create.ts +0 -7
- package/ui/src/@/configuration/ui/Form.svelte +0 -75
- package/ui/src/@/configuration/ui/Form.ts +0 -79
- package/ui/src/@/configuration/ui/Row.svelte +0 -44
- package/ui/src/@/configuration/ui/Row.ts +0 -9
- package/ui/src/@/configuration/ui/Value.svelte +0 -33
- package/ui/src/@/configuration/ui/Value.ts +0 -6
- package/ui/src/@/configuration/ui/index.ts +0 -9
- package/ui/src/@/configuration/ui/intl/built.js +0 -38
- package/ui/src/@/configuration/ui/intl/context.yaml +0 -51
- package/ui/src/@/configuration/ui/intl/en-US.yaml +0 -21
- package/ui/src/@/configuration/ui/intl/index.ts +0 -9
- package/ui/src/@/configuration/ui/intl/types.ts +0 -31
- package/ui/src/@/configuration/ui/read.test.ts +0 -75
- package/ui/src/@/configuration/ui/read.ts +0 -102
- package/ui/src/@/configuration/ui/ui.test.ts +0 -69
- package/ui/src/@/configuration/ui/ui.ts +0 -115
- package/ui/src/@/iam/index.ts +0 -1
- package/ui/src/@/iam/rc.ts +0 -22
- package/ui/src/@/iam/svc/authenticated.ts +0 -17
- package/ui/src/@/iam/svc/basic.ts +0 -23
- package/ui/src/@/iam/svc/index.ts +0 -10
- package/ui/src/@/iam/svc/logout.ts +0 -5
- package/ui/src/@/iam/svc/named.ts +0 -16
- package/ui/src/@/iam/svc/net/Echo.ts +0 -9
- package/ui/src/@/iam/svc/net/basic/index.ts +0 -1
- package/ui/src/@/iam/svc/net/basic/interface.ts +0 -15
- package/ui/src/@/iam/svc/net/federation/index.ts +0 -1
- package/ui/src/@/iam/svc/net/federation/interface.ts +0 -12
- package/ui/src/@/iam/svc/net/index.ts +0 -6
- package/ui/src/@/iam/svc/net/interface.ts +0 -17
- package/ui/src/@/iam/svc/net/otp/index.ts +0 -1
- package/ui/src/@/iam/svc/net/otp/interface.ts +0 -14
- package/ui/src/@/iam/svc/net/passkeys/index.ts +0 -1
- package/ui/src/@/iam/svc/net/passkeys/interface.ts +0 -12
- package/ui/src/@/iam/svc/oidc/apple.ts +0 -47
- package/ui/src/@/iam/svc/oidc/authenticate.ts +0 -62
- package/ui/src/@/iam/svc/oidc/google.ts +0 -45
- package/ui/src/@/iam/svc/oidc/hello.ts +0 -82
- package/ui/src/@/iam/svc/oidc/index.ts +0 -3
- package/ui/src/@/iam/svc/oidc/nonce.ts +0 -5
- package/ui/src/@/iam/svc/oidc/providers.ts +0 -28
- package/ui/src/@/iam/svc/oidc/standard.ts +0 -28
- package/ui/src/@/iam/svc/otp.ts +0 -18
- package/ui/src/@/iam/svc/passkeys/create.ts +0 -20
- package/ui/src/@/iam/svc/passkeys/index.ts +0 -2
- package/ui/src/@/iam/svc/passkeys/login.ts +0 -21
- package/ui/src/@/iam/svc/store.ts +0 -36
- package/ui/src/@/iam/svc/sync.ts +0 -18
- package/ui/src/@/iam/svc/transfer.ts +0 -11
- package/ui/src/@/iam/svc/update.ts +0 -8
- package/ui/src/@/iam/ui/AccountLike.ts +0 -4
- package/ui/src/@/iam/ui/Authenticated.svelte +0 -37
- package/ui/src/@/iam/ui/Authenticated.ts +0 -10
- package/ui/src/@/iam/ui/Authentication.svelte +0 -50
- package/ui/src/@/iam/ui/Authentication.ts +0 -9
- package/ui/src/@/iam/ui/Authorized.svelte +0 -32
- package/ui/src/@/iam/ui/Authorized.ts +0 -65
- package/ui/src/@/iam/ui/Card.svelte +0 -14
- package/ui/src/@/iam/ui/Card.ts +0 -7
- package/ui/src/@/iam/ui/Refresh.svelte +0 -39
- package/ui/src/@/iam/ui/credentials/Credentials.svelte +0 -26
- package/ui/src/@/iam/ui/credentials/Credentials.ts +0 -5
- package/ui/src/@/iam/ui/credentials/Provider.svelte +0 -24
- package/ui/src/@/iam/ui/credentials/Provider.ts +0 -5
- package/ui/src/@/iam/ui/credentials/index.ts +0 -1
- package/ui/src/@/iam/ui/credentials/passkeys/Key.svelte +0 -42
- package/ui/src/@/iam/ui/credentials/passkeys/Key.ts +0 -29
- package/ui/src/@/iam/ui/credentials/passkeys/Manager.svelte +0 -83
- package/ui/src/@/iam/ui/credentials/passkeys/Manager.ts +0 -5
- package/ui/src/@/iam/ui/credentials/passkeys/Passkeys.svelte +0 -39
- package/ui/src/@/iam/ui/credentials/passkeys/Summary.svelte +0 -27
- package/ui/src/@/iam/ui/credentials/passkeys/Summary.ts +0 -5
- package/ui/src/@/iam/ui/credentials/passkeys/index.ts +0 -1
- package/ui/src/@/iam/ui/credentials/providers.ts +0 -15
- package/ui/src/@/iam/ui/credentials/transfer/Qr.svelte +0 -24
- package/ui/src/@/iam/ui/credentials/transfer/Qr.ts +0 -3
- package/ui/src/@/iam/ui/credentials/transfer/Transfer.svelte +0 -48
- package/ui/src/@/iam/ui/credentials/transfer/Transfer.ts +0 -5
- package/ui/src/@/iam/ui/credentials/transfer/index.ts +0 -1
- package/ui/src/@/iam/ui/index.ts +0 -3
- package/ui/src/@/iam/ui/intl/built.js +0 -79
- package/ui/src/@/iam/ui/intl/context.yaml +0 -91
- package/ui/src/@/iam/ui/intl/en-US.yaml +0 -64
- package/ui/src/@/iam/ui/intl/index.ts +0 -10
- package/ui/src/@/iam/ui/intl/types.ts +0 -70
- package/ui/src/@/iam/ui/oidc/Authentication.svelte +0 -16
- package/ui/src/@/iam/ui/oidc/Authentication.ts +0 -5
- package/ui/src/@/iam/ui/oidc/Button.svelte +0 -36
- package/ui/src/@/iam/ui/oidc/Button.ts +0 -11
- package/ui/src/@/iam/ui/oidc/Refresh.svelte +0 -16
- package/ui/src/@/iam/ui/oidc/icons/Apple.svelte +0 -19
- package/ui/src/@/iam/ui/oidc/icons/Google.svelte +0 -31
- package/ui/src/@/iam/ui/oidc/icons/index.ts +0 -11
- package/ui/src/@/iam/ui/oidc/index.ts +0 -2
- package/ui/src/@/iam/ui/passkey/Authentication.svelte +0 -64
- package/ui/src/@/iam/ui/passkey/Authentication.ts +0 -8
- package/ui/src/@/iam/ui/passkey/Create.svelte +0 -53
- package/ui/src/@/iam/ui/passkey/Create.ts +0 -7
- package/ui/src/@/iam/ui/passkey/Login.svelte +0 -29
- package/ui/src/@/iam/ui/passkey/Refresh.svelte +0 -29
- package/ui/src/@/iam/ui/passkey/index.ts +0 -2
- package/ui/src/@/iam/ui/password/Authentication.svelte +0 -19
- package/ui/src/@/iam/ui/password/Authentication.ts +0 -8
- package/ui/src/@/iam/ui/password/Form.svelte +0 -151
- package/ui/src/@/iam/ui/password/Form.ts +0 -6
- package/ui/src/@/iam/ui/password/Password.svelte +0 -39
- package/ui/src/@/iam/ui/password/Password.ts +0 -6
- package/ui/src/@/iam/ui/password/Refresh.svelte +0 -5
- package/ui/src/@/iam/ui/password/index.ts +0 -2
- package/ui/src/@/net/index.ts +0 -1
- package/ui/src/@/net/svc/index.ts +0 -3
- package/ui/src/@/net/svc/origin.ts +0 -8
- package/ui/src/@/net/svc/query.test.ts +0 -45
- package/ui/src/@/net/svc/query.ts +0 -25
- package/ui/src/@/passkeys/index.ts +0 -1
- package/ui/src/@/passkeys/svc/add.ts +0 -15
- package/ui/src/@/passkeys/svc/create.ts +0 -58
- package/ui/src/@/passkeys/svc/credentials/convert.ts +0 -32
- package/ui/src/@/passkeys/svc/credentials/create.ts +0 -34
- package/ui/src/@/passkeys/svc/credentials/get.ts +0 -14
- package/ui/src/@/passkeys/svc/credentials/index.ts +0 -3
- package/ui/src/@/passkeys/svc/credentials/key.ts +0 -10
- package/ui/src/@/passkeys/svc/get.ts +0 -10
- package/ui/src/@/passkeys/svc/index.ts +0 -6
- package/ui/src/@/passkeys/svc/net/CreationResponse.ts +0 -15
- package/ui/src/@/passkeys/svc/net/Passkey.ts +0 -8
- package/ui/src/@/passkeys/svc/net/RequestResponse.ts +0 -12
- package/ui/src/@/passkeys/svc/net/challenges/Options.ts +0 -21
- package/ui/src/@/passkeys/svc/net/challenges/index.ts +0 -2
- package/ui/src/@/passkeys/svc/net/challenges/interface.ts +0 -16
- package/ui/src/@/passkeys/svc/net/index.ts +0 -4
- package/ui/src/@/passkeys/svc/net/interface.ts +0 -29
- package/ui/src/@/passkeys/svc/remove.ts +0 -13
- package/ui/src/@/passkeys/svc/request.ts +0 -50
- package/ui/src/@/passkeys/svc/store.ts +0 -13
- package/ui/src/@/passkeys/svc/supported.ts +0 -1
- package/ui/src/@/passkeys/ui/aaguid.json +0 -150
- package/ui/src/@/realtime/events.ts +0 -1
- package/ui/src/@/realtime/index.ts +0 -1
- package/ui/src/@/realtime/rc.ts +0 -13
- package/ui/src/@/realtime/svc/connect.ts +0 -67
- package/ui/src/@/realtime/svc/events.ts +0 -17
- package/ui/src/@/realtime/svc/index.ts +0 -5
- package/ui/src/@/realtime/svc/net/Message.ts +0 -6
- package/ui/src/@/realtime/svc/net/index.ts +0 -2
- package/ui/src/@/realtime/svc/net/interface.ts +0 -13
- package/ui/src/@/realtime/svc/reset.ts +0 -5
- package/ui/src/@/realtime/svc/status.ts +0 -12
- package/ui/src/@/realtime/svc/store.ts +0 -30
- package/ui/src/@/realtime/svc/time.ts +0 -15
- package/ui/src/app.d.ts +0 -20
- package/ui/src/app.html +0 -13
- package/ui/src/config/index.ts +0 -70
- package/ui/src/lib/assets/favicon.svg +0 -1
- package/ui/src/lib/components/clipboard/Clipboard.svelte +0 -63
- package/ui/src/lib/components/clipboard/Clipboard.ts +0 -12
- package/ui/src/lib/components/clipboard/index.ts +0 -1
- package/ui/src/lib/components/dismissable/Dismissable.svelte +0 -81
- package/ui/src/lib/components/dismissable/Dismissable.ts +0 -7
- package/ui/src/lib/components/dismissable/index.ts +0 -1
- package/ui/src/lib/components/dropdown/Back.svelte +0 -14
- package/ui/src/lib/components/dropdown/Back.ts +0 -3
- package/ui/src/lib/components/dropdown/Content.svelte +0 -76
- package/ui/src/lib/components/dropdown/Content.ts +0 -13
- package/ui/src/lib/components/dropdown/Context.ts +0 -18
- package/ui/src/lib/components/dropdown/Group.svelte +0 -24
- package/ui/src/lib/components/dropdown/Group.ts +0 -8
- package/ui/src/lib/components/dropdown/GroupContext.ts +0 -15
- package/ui/src/lib/components/dropdown/Item.svelte +0 -31
- package/ui/src/lib/components/dropdown/Item.ts +0 -5
- package/ui/src/lib/components/dropdown/Layer.svelte +0 -11
- package/ui/src/lib/components/dropdown/Layer.ts +0 -7
- package/ui/src/lib/components/dropdown/Root.svelte +0 -88
- package/ui/src/lib/components/dropdown/Root.ts +0 -6
- package/ui/src/lib/components/dropdown/Separator.svelte +0 -13
- package/ui/src/lib/components/dropdown/Separator.ts +0 -5
- package/ui/src/lib/components/dropdown/Trigger.svelte +0 -33
- package/ui/src/lib/components/dropdown/Trigger.ts +0 -5
- package/ui/src/lib/components/dropdown/index.ts +0 -8
- package/ui/src/lib/components/fullscreen/Fullscreen.svelte +0 -97
- package/ui/src/lib/components/fullscreen/Fullscreen.ts +0 -18
- package/ui/src/lib/components/fullscreen/Overlay.svelte +0 -15
- package/ui/src/lib/components/fullscreen/Overlay.ts +0 -7
- package/ui/src/lib/components/fullscreen/index.ts +0 -2
- package/ui/src/lib/components/hold/Hold.svelte +0 -133
- package/ui/src/lib/components/hold/Hold.ts +0 -23
- package/ui/src/lib/components/hold/index.ts +0 -1
- package/ui/src/lib/components/scrollable/Scrollable.svelte +0 -49
- package/ui/src/lib/components/scrollable/Scrollable.ts +0 -117
- package/ui/src/lib/components/scrollable/index.ts +0 -2
- package/ui/src/lib/components/shake/Shake.svelte +0 -62
- package/ui/src/lib/components/shake/Shake.ts +0 -7
- package/ui/src/lib/components/shake/index.ts +0 -1
- package/ui/src/lib/components/share/Share.svelte +0 -58
- package/ui/src/lib/components/share/Share.ts +0 -9
- package/ui/src/lib/components/share/index.ts +0 -1
- package/ui/src/lib/components/shell/Attention.svelte +0 -11
- package/ui/src/lib/components/shell/Attention.ts +0 -6
- package/ui/src/lib/components/shell/Header.svelte +0 -18
- package/ui/src/lib/components/shell/Header.ts +0 -7
- package/ui/src/lib/components/shell/Screen.svelte +0 -28
- package/ui/src/lib/components/shell/Screen.ts +0 -11
- package/ui/src/lib/components/shell/Sticky.svelte +0 -23
- package/ui/src/lib/components/shell/Sticky.ts +0 -8
- package/ui/src/lib/components/shell/Underlay.svelte +0 -21
- package/ui/src/lib/components/shell/Underlay.ts +0 -6
- package/ui/src/lib/components/shell/index.ts +0 -6
- package/ui/src/lib/components/shell/nav/Actions.svelte +0 -31
- package/ui/src/lib/components/shell/nav/Actions.ts +0 -16
- package/ui/src/lib/components/shell/nav/Back.svelte +0 -20
- package/ui/src/lib/components/shell/nav/Back.ts +0 -9
- package/ui/src/lib/components/shell/nav/Bar.svelte +0 -24
- package/ui/src/lib/components/shell/nav/Bar.ts +0 -3
- package/ui/src/lib/components/shell/nav/Button.svelte +0 -64
- package/ui/src/lib/components/shell/nav/Button.ts +0 -7
- package/ui/src/lib/components/shell/nav/Nav.svelte +0 -62
- package/ui/src/lib/components/shell/nav/Nav.ts +0 -35
- package/ui/src/lib/components/shell/nav/Return.svelte +0 -29
- package/ui/src/lib/components/shell/nav/Return.ts +0 -15
- package/ui/src/lib/components/shell/nav/Sections.svelte +0 -58
- package/ui/src/lib/components/shell/nav/Sections.ts +0 -6
- package/ui/src/lib/components/shell/nav/Toolbar.svelte +0 -73
- package/ui/src/lib/components/shell/nav/Toolbar.ts +0 -3
- package/ui/src/lib/components/shell/nav/history.ts +0 -36
- package/ui/src/lib/components/shell/nav/index.ts +0 -5
- package/ui/src/lib/components/shell/nav/store.ts +0 -24
- package/ui/src/lib/components/ui/alert/alert-action.svelte +0 -20
- package/ui/src/lib/components/ui/alert/alert-description.svelte +0 -23
- package/ui/src/lib/components/ui/alert/alert-title.svelte +0 -23
- package/ui/src/lib/components/ui/alert/alert.svelte +0 -43
- package/ui/src/lib/components/ui/alert/index.ts +0 -17
- package/ui/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte +0 -27
- package/ui/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte +0 -27
- package/ui/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte +0 -32
- package/ui/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte +0 -17
- package/ui/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte +0 -23
- package/ui/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte +0 -20
- package/ui/src/lib/components/ui/alert-dialog/alert-dialog-media.svelte +0 -20
- package/ui/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte +0 -17
- package/ui/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte +0 -7
- package/ui/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte +0 -17
- package/ui/src/lib/components/ui/alert-dialog/alert-dialog-trigger.svelte +0 -7
- package/ui/src/lib/components/ui/alert-dialog/alert-dialog.svelte +0 -7
- package/ui/src/lib/components/ui/alert-dialog/index.ts +0 -40
- package/ui/src/lib/components/ui/badge/badge.svelte +0 -49
- package/ui/src/lib/components/ui/badge/index.ts +0 -2
- package/ui/src/lib/components/ui/button/button.svelte +0 -82
- package/ui/src/lib/components/ui/button/index.ts +0 -17
- package/ui/src/lib/components/ui/button-group/button-group-separator.svelte +0 -23
- package/ui/src/lib/components/ui/button-group/button-group-text.svelte +0 -28
- package/ui/src/lib/components/ui/button-group/button-group.svelte +0 -46
- package/ui/src/lib/components/ui/button-group/index.ts +0 -15
- package/ui/src/lib/components/ui/card/card-action.svelte +0 -23
- package/ui/src/lib/components/ui/card/card-content.svelte +0 -20
- package/ui/src/lib/components/ui/card/card-description.svelte +0 -20
- package/ui/src/lib/components/ui/card/card-footer.svelte +0 -20
- package/ui/src/lib/components/ui/card/card-header.svelte +0 -23
- package/ui/src/lib/components/ui/card/card-title.svelte +0 -20
- package/ui/src/lib/components/ui/card/card.svelte +0 -22
- package/ui/src/lib/components/ui/card/index.ts +0 -25
- package/ui/src/lib/components/ui/checkbox/checkbox.svelte +0 -39
- package/ui/src/lib/components/ui/checkbox/index.ts +0 -6
- package/ui/src/lib/components/ui/collapsible/collapsible-content.svelte +0 -7
- package/ui/src/lib/components/ui/collapsible/collapsible-trigger.svelte +0 -7
- package/ui/src/lib/components/ui/collapsible/collapsible.svelte +0 -20
- package/ui/src/lib/components/ui/collapsible/index.ts +0 -13
- package/ui/src/lib/components/ui/input/index.ts +0 -7
- package/ui/src/lib/components/ui/input/input.svelte +0 -48
- package/ui/src/lib/components/ui/input-otp/index.ts +0 -15
- package/ui/src/lib/components/ui/input-otp/input-otp-group.svelte +0 -20
- package/ui/src/lib/components/ui/input-otp/input-otp-separator.svelte +0 -27
- package/ui/src/lib/components/ui/input-otp/input-otp-slot.svelte +0 -31
- package/ui/src/lib/components/ui/input-otp/input-otp.svelte +0 -23
- package/ui/src/lib/components/ui/item/index.ts +0 -34
- package/ui/src/lib/components/ui/item/item-actions.svelte +0 -20
- package/ui/src/lib/components/ui/item/item-content.svelte +0 -23
- package/ui/src/lib/components/ui/item/item-description.svelte +0 -23
- package/ui/src/lib/components/ui/item/item-footer.svelte +0 -20
- package/ui/src/lib/components/ui/item/item-group.svelte +0 -21
- package/ui/src/lib/components/ui/item/item-header.svelte +0 -20
- package/ui/src/lib/components/ui/item/item-media.svelte +0 -42
- package/ui/src/lib/components/ui/item/item-separator.svelte +0 -19
- package/ui/src/lib/components/ui/item/item-title.svelte +0 -20
- package/ui/src/lib/components/ui/item/item.svelte +0 -61
- package/ui/src/lib/components/ui/kbd/index.ts +0 -10
- package/ui/src/lib/components/ui/kbd/kbd-group.svelte +0 -20
- package/ui/src/lib/components/ui/kbd/kbd.svelte +0 -23
- package/ui/src/lib/components/ui/label/index.ts +0 -7
- package/ui/src/lib/components/ui/label/label.svelte +0 -20
- package/ui/src/lib/components/ui/progress/index.ts +0 -7
- package/ui/src/lib/components/ui/progress/progress.svelte +0 -27
- package/ui/src/lib/components/ui/select/index.ts +0 -37
- package/ui/src/lib/components/ui/select/select-content.svelte +0 -45
- package/ui/src/lib/components/ui/select/select-group-heading.svelte +0 -21
- package/ui/src/lib/components/ui/select/select-group.svelte +0 -17
- package/ui/src/lib/components/ui/select/select-item.svelte +0 -40
- package/ui/src/lib/components/ui/select/select-label.svelte +0 -20
- package/ui/src/lib/components/ui/select/select-portal.svelte +0 -7
- package/ui/src/lib/components/ui/select/select-scroll-down-button.svelte +0 -20
- package/ui/src/lib/components/ui/select/select-scroll-up-button.svelte +0 -20
- package/ui/src/lib/components/ui/select/select-separator.svelte +0 -18
- package/ui/src/lib/components/ui/select/select-trigger.svelte +0 -29
- package/ui/src/lib/components/ui/select/select.svelte +0 -11
- package/ui/src/lib/components/ui/separator/index.ts +0 -7
- package/ui/src/lib/components/ui/separator/separator.svelte +0 -23
- package/ui/src/lib/components/ui/spinner/index.ts +0 -1
- package/ui/src/lib/components/ui/spinner/spinner.svelte +0 -18
- package/ui/src/lib/components/ui/tabs/index.ts +0 -18
- package/ui/src/lib/components/ui/tabs/tabs-content.svelte +0 -17
- package/ui/src/lib/components/ui/tabs/tabs-list.svelte +0 -40
- package/ui/src/lib/components/ui/tabs/tabs-trigger.svelte +0 -23
- package/ui/src/lib/components/ui/tabs/tabs.svelte +0 -19
- package/ui/src/lib/components/ui/textarea/index.ts +0 -7
- package/ui/src/lib/components/ui/textarea/textarea.svelte +0 -22
- package/ui/src/lib/intl/bcp.ts +0 -25
- package/ui/src/lib/intl/built.js +0 -18
- package/ui/src/lib/intl/context.yaml +0 -18
- package/ui/src/lib/intl/en-US.yaml +0 -6
- package/ui/src/lib/intl/index.ts +0 -65
- package/ui/src/lib/intl/types.ts +0 -19
- package/ui/src/lib/tools/ago.ts +0 -10
- package/ui/src/lib/tools/assert.ts +0 -3
- package/ui/src/lib/tools/cap.ts +0 -5
- package/ui/src/lib/tools/clicks.ts +0 -25
- package/ui/src/lib/tools/contextmenu.ts +0 -19
- package/ui/src/lib/tools/convert.ts +0 -32
- package/ui/src/lib/tools/currency.test.ts +0 -10
- package/ui/src/lib/tools/currency.ts +0 -55
- package/ui/src/lib/tools/date.test.ts +0 -21
- package/ui/src/lib/tools/date.ts +0 -35
- package/ui/src/lib/tools/delay.ts +0 -7
- package/ui/src/lib/tools/image.ts +0 -39
- package/ui/src/lib/tools/index.ts +0 -20
- package/ui/src/lib/tools/location.ts +0 -41
- package/ui/src/lib/tools/metronome.ts +0 -11
- package/ui/src/lib/tools/mq.ts +0 -84
- package/ui/src/lib/tools/onsubmit.ts +0 -21
- package/ui/src/lib/tools/random.ts +0 -15
- package/ui/src/lib/tools/search.ts +0 -25
- package/ui/src/lib/tools/timeout.ts +0 -26
- package/ui/src/lib/tools/transition.ts +0 -207
- package/ui/src/lib/tools/types.ts +0 -3
- package/ui/src/lib/tools/uuid.test.ts +0 -28
- package/ui/src/lib/tools/uuid.ts +0 -9
- package/ui/src/lib/typeset.css +0 -502
- package/ui/src/lib/utils.ts +0 -12
- package/ui/src/routes/(private)/+layout.svelte +0 -112
- package/ui/src/routes/(private)/+page.svelte +0 -7
- package/ui/src/routes/(private)/[component]/+page.svelte +0 -77
- package/ui/src/routes/+layout.svelte +0 -25
- package/ui/src/routes/+layout.ts +0 -14
- package/ui/src/routes/layout.css +0 -232
- package/ui/svelte.config.js +0 -36
- package/ui/tools/feat.js +0 -43
- package/ui/tools/hooks/README.md +0 -13
- package/ui/tools/hooks/guard-intl.sh +0 -40
- package/ui/tools/shad.js +0 -7
- package/ui/tsconfig.json +0 -20
- package/ui/vite.config.ts +0 -8
- /package/ui/{static → dist}/robots.txt +0 -0
package/ui/package.json
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "configuration-ui",
|
|
3
|
-
"private": true,
|
|
4
|
-
"version": "0.0.1",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"scripts": {
|
|
7
|
-
"dev": "vite dev --open --host",
|
|
8
|
-
"build": "vite build",
|
|
9
|
-
"preview": "vite preview",
|
|
10
|
-
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
|
11
|
-
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
|
12
|
-
"lint": "eslint .",
|
|
13
|
-
"test:e2e": "playwright install && playwright test",
|
|
14
|
-
"test": "npm run test:e2e",
|
|
15
|
-
"format": "eslint . --fix",
|
|
16
|
-
"bump": "npx -y npm-check-updates --target minor -u",
|
|
17
|
-
"features": "npx bddgen && npx playwright test"
|
|
18
|
-
},
|
|
19
|
-
"devDependencies": {
|
|
20
|
-
"@eslint/js": "^9.39.5",
|
|
21
|
-
"@faker-js/faker": "^10.6.0",
|
|
22
|
-
"@fontsource-variable/inter": "^5.3.0",
|
|
23
|
-
"@internationalized/date": "^3.12.3",
|
|
24
|
-
"@lucide/svelte": "^1.34.0",
|
|
25
|
-
"@playwright/test": "^1.62.1",
|
|
26
|
-
"@sveltejs/adapter-static": "^3.0.10",
|
|
27
|
-
"@sveltejs/kit": "^2.70.3",
|
|
28
|
-
"@sveltejs/vite-plugin-svelte": "^7.3.0",
|
|
29
|
-
"@tailwindcss/vite": "^4.3.3",
|
|
30
|
-
"@toa.io/origin": "^1.18.2",
|
|
31
|
-
"@types/d3-selection": "^3.0.11",
|
|
32
|
-
"@types/d3-zoom": "^3.0.8",
|
|
33
|
-
"@types/dom-navigation": "^1.0.7",
|
|
34
|
-
"@types/negotiator": "^0.6.5",
|
|
35
|
-
"@types/node": "^24",
|
|
36
|
-
"@types/qrcode": "^1.5.6",
|
|
37
|
-
"ajv": "8.20.0",
|
|
38
|
-
"bits-ui": "^2.19.0",
|
|
39
|
-
"clsx": "^2.1.1",
|
|
40
|
-
"d3-selection": "^3.0.0",
|
|
41
|
-
"d3-zoom": "^3.0.0",
|
|
42
|
-
"eslint": "^9.39.5",
|
|
43
|
-
"eslint-plugin-import": "^2.32.0",
|
|
44
|
-
"eslint-plugin-svelte": "^3.23.0",
|
|
45
|
-
"eslint-plugin-unused-imports": "^4.4.1",
|
|
46
|
-
"globals": "^17.11.0",
|
|
47
|
-
"js-yaml": "5.4.1",
|
|
48
|
-
"meros": "^1.3.2",
|
|
49
|
-
"mitt": "^3.0.1",
|
|
50
|
-
"neostandard": "^0.13.0",
|
|
51
|
-
"playwright-bdd": "^9.2.0",
|
|
52
|
-
"shadcn-svelte": "^1.5.1",
|
|
53
|
-
"svas": "^1.7.1",
|
|
54
|
-
"svelte": "^5.56.10",
|
|
55
|
-
"svelte-check": "^4.7.6",
|
|
56
|
-
"svintl": "^1.17.0",
|
|
57
|
-
"tailwind-merge": "^3.6.0",
|
|
58
|
-
"tailwind-variants": "^3.3.1",
|
|
59
|
-
"tailwindcss": "^4.3.3",
|
|
60
|
-
"tw-animate-css": "^1.4.0",
|
|
61
|
-
"typescript": "^5.9.3",
|
|
62
|
-
"typescript-eslint": "^8.68.0",
|
|
63
|
-
"vite": "^8.2.2",
|
|
64
|
-
"vite-plugin-transform-lucide-imports": "^0.3.1",
|
|
65
|
-
"vitest": "^4.1.11"
|
|
66
|
-
},
|
|
67
|
-
"bin": {
|
|
68
|
-
"shad": "tools/shad.js",
|
|
69
|
-
"feat": "tools/feat.js"
|
|
70
|
-
},
|
|
71
|
-
"dependencies": {
|
|
72
|
-
"negotiator": "^1.1.0",
|
|
73
|
-
"qrcode": "^1.5.4"
|
|
74
|
-
},
|
|
75
|
-
"description": "Toa Configuration UI"
|
|
76
|
-
}
|
package/ui/playwright.config.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { defineBddConfig } from 'playwright-bdd'
|
|
2
|
-
import { defineConfig } from '@playwright/test'
|
|
3
|
-
|
|
4
|
-
const testDir = defineBddConfig({
|
|
5
|
-
features: './features/**/*.feature',
|
|
6
|
-
steps: './features/steps/**/*.ts',
|
|
7
|
-
})
|
|
8
|
-
|
|
9
|
-
export default defineConfig({
|
|
10
|
-
testDir,
|
|
11
|
-
use: { baseURL: process.env.APP_URL || 'http://localhost:5173' },
|
|
12
|
-
expect: { timeout: 3_000 },
|
|
13
|
-
})
|
package/ui/skills-lock.json
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 1,
|
|
3
|
-
"skills": {
|
|
4
|
-
"antcn": {
|
|
5
|
-
"source": "cn.ants.dev",
|
|
6
|
-
"sourceUrl": "https://cn.ants.dev",
|
|
7
|
-
"sourceType": "well-known",
|
|
8
|
-
"computedHash": "9dc789fa80bcdffb1347075dd3be6fb10fa13d5ac6f5b4831cb3ef8eb2d94e16",
|
|
9
|
-
"wellKnownDigest": "sha256:d4ca7d272fcbb9fb577db347542947414a40d530b0ae260b9c83bb827e675714"
|
|
10
|
-
},
|
|
11
|
-
"shadcn-svelte": {
|
|
12
|
-
"source": "huntabyte/shadcn-svelte",
|
|
13
|
-
"sourceType": "github",
|
|
14
|
-
"skillPath": "skills/shadcn-svelte/SKILL.md",
|
|
15
|
-
"computedHash": "d4f3f983a71466a86649985a8a7fbce47da29f44de3a9d02540bbcf3167134e0"
|
|
16
|
-
},
|
|
17
|
-
"svas": {
|
|
18
|
-
"source": "temich/svas",
|
|
19
|
-
"sourceType": "github",
|
|
20
|
-
"skillPath": "skills/svas/SKILL.md",
|
|
21
|
-
"computedHash": "4c40a657053dd5a475b72bdc4163047cee30bba901c98be246303a95d9fe9d2c"
|
|
22
|
-
},
|
|
23
|
-
"svintl": {
|
|
24
|
-
"source": "temich/svintl",
|
|
25
|
-
"sourceType": "github",
|
|
26
|
-
"skillPath": "skills/svintl/SKILL.md",
|
|
27
|
-
"computedHash": "e243a29a69fd45b98e05c683c116e3bdce2a2d8c7e2858b89e81ae7b52e86008"
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './svc'
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { ensure } from 'svas'
|
|
2
|
-
import { account } from '@/iam/svc/store'
|
|
3
|
-
import { configurations } from './store'
|
|
4
|
-
import * as origin from './net'
|
|
5
|
-
import type { Node } from './net'
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Creates a configuration for the component. A configuration is immutable, so this is a
|
|
9
|
-
* new object rather than a change to the one there — and what it answers with is the
|
|
10
|
-
* epoch it was filed under.
|
|
11
|
-
*
|
|
12
|
-
* The created value is written into the store, so every screen showing it follows
|
|
13
|
-
* without asking the service again.
|
|
14
|
-
*/
|
|
15
|
-
export async function create(component: string, configuration: Node): Promise<void | Error> {
|
|
16
|
-
// the identity is what the service records as the originator, and creating is a side
|
|
17
|
-
// effect of a user action — so it must be there by now
|
|
18
|
-
ensure(account)
|
|
19
|
-
|
|
20
|
-
const created = await origin.create(component, configuration)
|
|
21
|
-
|
|
22
|
-
if (created instanceof Error) return created
|
|
23
|
-
|
|
24
|
-
configurations.update(component, (current) => ({
|
|
25
|
-
...current,
|
|
26
|
-
configuration,
|
|
27
|
-
epoch: created.epoch,
|
|
28
|
-
}))
|
|
29
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/** A component's configuration for its deployed epoch, with the schema it satisfies. */
|
|
2
|
-
export interface Configuration {
|
|
3
|
-
/** The component's name, which is what identifies its configuration. */
|
|
4
|
-
id: string
|
|
5
|
-
component: string
|
|
6
|
-
epoch: string
|
|
7
|
-
configuration: Node
|
|
8
|
-
/** What the value is checked against. An epoch the deployment forgot has none. */
|
|
9
|
-
schema?: object
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
/** What was created, as the service answers a `POST`. */
|
|
13
|
-
export interface Created {
|
|
14
|
-
id: string
|
|
15
|
-
epoch: string
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export type Node = Record<string, unknown>
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { origin } from '@/net'
|
|
2
|
-
import type { Configuration, Created, Node } from './Configuration'
|
|
3
|
-
|
|
4
|
-
const values = origin.resource('/configuration/values/', { credentials: 'include' })
|
|
5
|
-
|
|
6
|
-
/** What the resources answer with: the component names the item, the store keys by `id`. */
|
|
7
|
-
type Item = Omit<Configuration, 'id'>
|
|
8
|
-
|
|
9
|
-
export async function list(): Promise<Configuration[] | Error> {
|
|
10
|
-
const items = await values.json<Item[]>()
|
|
11
|
-
|
|
12
|
-
if (items instanceof Error) return items
|
|
13
|
-
|
|
14
|
-
return items.map(identify)
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export async function get(component: string): Promise<Configuration | Error> {
|
|
18
|
-
const item = await values.json<Omit<Item, 'component'>>(component + '/')
|
|
19
|
-
|
|
20
|
-
if (item instanceof Error) return item
|
|
21
|
-
|
|
22
|
-
return identify({ ...item, component })
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export async function create(component: string, configuration: Node): Promise<Created | Error> {
|
|
26
|
-
return await values.json<Created>(component + '/', {
|
|
27
|
-
method: 'POST',
|
|
28
|
-
body: { configuration },
|
|
29
|
-
})
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/** A configuration is its component's, so the component is what identifies it. */
|
|
33
|
-
function identify(item: Item): Configuration {
|
|
34
|
-
return { ...item, id: item.component }
|
|
35
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { collection, values } from 'svas'
|
|
2
|
-
import { account } from '@/iam/svc/store'
|
|
3
|
-
import * as origin from './net'
|
|
4
|
-
|
|
5
|
-
export const configurations = collection<Configuration>({
|
|
6
|
-
get: origin.list,
|
|
7
|
-
values: values<Configuration>({ get: origin.get }),
|
|
8
|
-
persist: 'configuration:values',
|
|
9
|
-
bind: account,
|
|
10
|
-
stale: true,
|
|
11
|
-
})
|
|
12
|
-
|
|
13
|
-
export type Configuration = origin.Configuration
|
|
14
|
-
export type Node = origin.Node
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { Async, ok } from 'svas'
|
|
3
|
-
import { configurations, type Configuration } from '@/configuration'
|
|
4
|
-
import { Separator } from '$ui/separator'
|
|
5
|
-
import { base } from '$app/paths'
|
|
6
|
-
import { goto } from '$app/navigation'
|
|
7
|
-
import { only, query, rank, system } from './ui'
|
|
8
|
-
import { dict } from './intl'
|
|
9
|
-
import Row from './Row.svelte'
|
|
10
|
-
import type { Props } from './Configurations'
|
|
11
|
-
|
|
12
|
-
const { class: className, ...props }: Props = $props()
|
|
13
|
-
|
|
14
|
-
const list = $derived(ok($configurations) ? $configurations : [])
|
|
15
|
-
|
|
16
|
-
const shown = $derived(
|
|
17
|
-
list
|
|
18
|
-
.map((item) => ({ item, rank: rank(item, $query) }))
|
|
19
|
-
.filter((ranked) => ranked.rank > 0)
|
|
20
|
-
.sort(order)
|
|
21
|
-
.map((ranked) => ranked.item),
|
|
22
|
-
)
|
|
23
|
-
|
|
24
|
-
/** Best answers first, then by name; the service returns them in its own order. */
|
|
25
|
-
function order(a: Ranked, b: Ranked) {
|
|
26
|
-
return b.rank - a.rank || a.item.component.localeCompare(b.item.component)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* What the application declared, then what it was given. A band the filter has emptied
|
|
31
|
-
* is not a band: its heading would say there is something there and there is not.
|
|
32
|
-
*/
|
|
33
|
-
function group(items: Configuration[]) {
|
|
34
|
-
return [
|
|
35
|
-
{ id: 'user', label: $dict.space.user, of: items.filter((it) => !system(it.component)) },
|
|
36
|
-
{ id: 'system', label: $dict.space.system, of: items.filter((it) => system(it.component)) },
|
|
37
|
-
].filter((band) => band.of.length > 0)
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
interface Ranked {
|
|
41
|
-
item: Configuration
|
|
42
|
-
rank: number
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// with one row left there is nothing to choose, so the key does what pressing it does
|
|
46
|
-
$effect(() => {
|
|
47
|
-
const single = shown.length === 1 ? shown[0].id : null
|
|
48
|
-
|
|
49
|
-
only.set(single === null ? null : () => void goto(`${base}/${single}/`))
|
|
50
|
-
|
|
51
|
-
return () => only.set(null)
|
|
52
|
-
})
|
|
53
|
-
</script>
|
|
54
|
-
|
|
55
|
-
<Async store={configurations}>
|
|
56
|
-
{#snippet awaited()}
|
|
57
|
-
{#if list.length === 0}
|
|
58
|
-
<p class="text-muted-foreground py-20 text-center">{$dict.values.empty}</p>
|
|
59
|
-
{:else if shown.length === 0}
|
|
60
|
-
<p class="text-muted-foreground py-20 text-center">{$dict.values.nomatch}</p>
|
|
61
|
-
{:else}
|
|
62
|
-
<div class={['flex flex-col gap-6', className]} {...props}>
|
|
63
|
-
{#each group(shown) as band (band.id)}
|
|
64
|
-
<section class="flex flex-col gap-2">
|
|
65
|
-
<div class="text-muted-foreground flex items-center gap-3">
|
|
66
|
-
<span class="text-xs font-medium tracking-wide uppercase">{band.label}</span>
|
|
67
|
-
<Separator class="flex-1" />
|
|
68
|
-
</div>
|
|
69
|
-
|
|
70
|
-
<!-- a row says a name and nothing else, so it takes a column rather than a
|
|
71
|
-
line: as many columns as the screen has room for -->
|
|
72
|
-
<div
|
|
73
|
-
role="list"
|
|
74
|
-
class="grid grid-cols-1 gap-2 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4"
|
|
75
|
-
>
|
|
76
|
-
{#each band.of as item (item.id)}
|
|
77
|
-
<Row configuration={item} />
|
|
78
|
-
{/each}
|
|
79
|
-
</div>
|
|
80
|
-
</section>
|
|
81
|
-
{/each}
|
|
82
|
-
</div>
|
|
83
|
-
{/if}
|
|
84
|
-
{/snippet}
|
|
85
|
-
</Async>
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { dump } from 'js-yaml'
|
|
3
|
-
import { Pencil } from '@lucide/svelte'
|
|
4
|
-
import { create } from '@/configuration'
|
|
5
|
-
import { buttonVariants } from '$ui/button'
|
|
6
|
-
import * as Dialog from '$ui/alert-dialog'
|
|
7
|
-
import { dict } from './intl'
|
|
8
|
-
import Form from './Form.svelte'
|
|
9
|
-
import type { Node } from '@/configuration'
|
|
10
|
-
import type { Props } from './Create'
|
|
11
|
-
|
|
12
|
-
const { configuration }: Props = $props()
|
|
13
|
-
|
|
14
|
-
let open = $state(false)
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* The dialog opens on what the component has now, so a change is an edit. A created
|
|
18
|
-
* configuration replaces the whole of the one before it — what is not here is gone.
|
|
19
|
-
*/
|
|
20
|
-
const text = $derived(dump(configuration.configuration))
|
|
21
|
-
|
|
22
|
-
async function submit(value: Node): Promise<void | Error> {
|
|
23
|
-
const result = await create(configuration.component, value)
|
|
24
|
-
|
|
25
|
-
if (result instanceof Error) return result
|
|
26
|
-
|
|
27
|
-
open = false
|
|
28
|
-
}
|
|
29
|
-
</script>
|
|
30
|
-
|
|
31
|
-
<Dialog.Root bind:open>
|
|
32
|
-
<Dialog.Trigger
|
|
33
|
-
id="configuration-edit-button"
|
|
34
|
-
class={buttonVariants({ variant: 'outline', size: 'sm' })}
|
|
35
|
-
>
|
|
36
|
-
<Pencil />
|
|
37
|
-
{$dict.create.action}
|
|
38
|
-
</Dialog.Trigger>
|
|
39
|
-
|
|
40
|
-
<!-- the width goes through the same `data-size` variant the component styles itself with:
|
|
41
|
-
a plain `sm:max-w-*` loses to it on specificity, and tailwind-merge, seeing a different
|
|
42
|
-
variant, keeps both. An editor takes the room the screen has rather than a fixed step. -->
|
|
43
|
-
<Dialog.Content
|
|
44
|
-
class="data-[size=default]:max-w-[calc(100vw-2rem)]
|
|
45
|
-
data-[size=default]:sm:max-w-[min(90vw,72rem)]"
|
|
46
|
-
>
|
|
47
|
-
<Dialog.Header>
|
|
48
|
-
<Dialog.Title>{$dict.create.title}</Dialog.Title>
|
|
49
|
-
</Dialog.Header>
|
|
50
|
-
|
|
51
|
-
<!-- keyed on the text the dialog opened with, so a reopened dialog is not the one
|
|
52
|
-
that was cancelled -->
|
|
53
|
-
{#if open}
|
|
54
|
-
{#key text}
|
|
55
|
-
<Form
|
|
56
|
-
value={{ text }}
|
|
57
|
-
schema={configuration.schema}
|
|
58
|
-
onsubmit={submit}
|
|
59
|
-
oncancel={() => (open = false)}
|
|
60
|
-
/>
|
|
61
|
-
{/key}
|
|
62
|
-
{/if}
|
|
63
|
-
</Dialog.Content>
|
|
64
|
-
</Dialog.Root>
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { untrack } from 'svelte'
|
|
3
|
-
import { Textarea } from '$ui/textarea'
|
|
4
|
-
import { Button } from '$ui/button'
|
|
5
|
-
import { onsubmit as handler } from '$lib/tools'
|
|
6
|
-
import { dict } from './intl'
|
|
7
|
-
import { read, type Props } from './Form'
|
|
8
|
-
|
|
9
|
-
const { value, schema, onsubmit, oncancel, class: className }: Props = $props()
|
|
10
|
-
|
|
11
|
-
// captured once on purpose: the dialog keys the form on what it opened with, so a
|
|
12
|
-
// form that is still mounted is still the one the reader is editing
|
|
13
|
-
let text = $state(untrack(() => value.text))
|
|
14
|
-
let busy = $state(false)
|
|
15
|
-
let failed = $state(false)
|
|
16
|
-
|
|
17
|
-
const reading = $derived(read(text, schema, $dict.create.malformed))
|
|
18
|
-
const errors = $derived('errors' in reading ? reading.errors : [])
|
|
19
|
-
|
|
20
|
-
async function submit(): Promise<void> {
|
|
21
|
-
if ('errors' in reading) return
|
|
22
|
-
|
|
23
|
-
busy = true
|
|
24
|
-
failed = false
|
|
25
|
-
|
|
26
|
-
const result = await onsubmit?.(reading.value)
|
|
27
|
-
|
|
28
|
-
busy = false
|
|
29
|
-
failed = result instanceof Error
|
|
30
|
-
}
|
|
31
|
-
</script>
|
|
32
|
-
|
|
33
|
-
<form onsubmit={handler(submit)} class={['flex flex-col gap-3', className]}>
|
|
34
|
-
<!-- the dialog's title says what this is; the field carries the name for a reader
|
|
35
|
-
that cannot see the title -->
|
|
36
|
-
<Textarea
|
|
37
|
-
id="configuration-value-input"
|
|
38
|
-
aria-label={$dict.create.editor}
|
|
39
|
-
bind:value={text}
|
|
40
|
-
spellcheck={false}
|
|
41
|
-
autocapitalize="off"
|
|
42
|
-
aria-invalid={errors.length > 0}
|
|
43
|
-
aria-describedby={errors.length > 0 ? 'configuration-errors' : undefined}
|
|
44
|
-
class="field-sizing-fixed h-[min(55vh,32rem)] min-h-48 font-mono text-xs"
|
|
45
|
-
/>
|
|
46
|
-
|
|
47
|
-
<!-- no room is held for it: an empty band under the editor reads as a gap, and the
|
|
48
|
-
dialog is centred, so what it costs when something is wrong is half a line -->
|
|
49
|
-
<div id="configuration-errors" class="text-destructive empty:hidden font-mono text-xs">
|
|
50
|
-
{#each errors as error, at (at)}
|
|
51
|
-
<div>{error}</div>
|
|
52
|
-
{/each}
|
|
53
|
-
|
|
54
|
-
{#if failed && errors.length === 0}
|
|
55
|
-
<div>{$dict.create.failed}</div>
|
|
56
|
-
{/if}
|
|
57
|
-
</div>
|
|
58
|
-
|
|
59
|
-
<div class="flex justify-end gap-2">
|
|
60
|
-
<Button
|
|
61
|
-
id="configuration-cancel-button"
|
|
62
|
-
type="button"
|
|
63
|
-
variant="ghost"
|
|
64
|
-
disabled={busy}
|
|
65
|
-
onclick={oncancel}
|
|
66
|
-
>
|
|
67
|
-
{$dict.create.cancel}
|
|
68
|
-
</Button>
|
|
69
|
-
|
|
70
|
-
<!-- what does not satisfy the schema never reaches the service -->
|
|
71
|
-
<Button id="configuration-submit-button" type="submit" disabled={busy || errors.length > 0}>
|
|
72
|
-
{$dict.create.submit}
|
|
73
|
-
</Button>
|
|
74
|
-
</div>
|
|
75
|
-
</form>
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { load } from 'js-yaml'
|
|
2
|
-
import Ajv, { type ErrorObject, type ValidateFunction } from 'ajv'
|
|
3
|
-
import type { ClassValue } from 'svelte/elements'
|
|
4
|
-
import type { Node } from '@/configuration'
|
|
5
|
-
|
|
6
|
-
export interface Value {
|
|
7
|
-
/** The configuration as the reader wrote it. */
|
|
8
|
-
text: string
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export interface Props {
|
|
12
|
-
value: Value
|
|
13
|
-
/** What the value is checked against. Without one nothing here can be checked. */
|
|
14
|
-
schema?: object
|
|
15
|
-
onsubmit?: (value: Node) => Promise<void | Error>
|
|
16
|
-
oncancel?: () => void
|
|
17
|
-
class?: ClassValue
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/** What the text says, or what is wrong with it. */
|
|
21
|
-
export type Reading = { value: Node } | { errors: string[] }
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* `useDefaults` is off: the service fills the schema's defaults when it stores the
|
|
25
|
-
* value, and filling them here would put words in the reader's mouth.
|
|
26
|
-
*
|
|
27
|
-
* `$data` is off — it is ajv's default, said out loud because the option carries a
|
|
28
|
-
* ReDoS of its own (GHSA-2g4f-4pwh-qvx6) and nothing here needs it.
|
|
29
|
-
*/
|
|
30
|
-
const ajv = new Ajv({ allErrors: true, strict: false, $data: false })
|
|
31
|
-
|
|
32
|
-
const validators = new WeakMap<object, ValidateFunction>()
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* The configuration the text holds, or every reason it is not one. Nothing is sent that
|
|
36
|
-
* has not passed this, so the service never refuses what the page could have caught.
|
|
37
|
-
*/
|
|
38
|
-
export function read(text: string, schema: object | undefined, malformed: string): Reading {
|
|
39
|
-
let parsed: unknown
|
|
40
|
-
|
|
41
|
-
try {
|
|
42
|
-
parsed = load(text)
|
|
43
|
-
} catch {
|
|
44
|
-
return { errors: [malformed] }
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// an empty document is an empty configuration, which is a thing a schema may allow
|
|
48
|
-
const value = parsed ?? {}
|
|
49
|
-
|
|
50
|
-
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
51
|
-
return { errors: [malformed] }
|
|
52
|
-
|
|
53
|
-
if (schema === undefined) return { value: value as Node }
|
|
54
|
-
|
|
55
|
-
const validate = compile(schema)
|
|
56
|
-
|
|
57
|
-
if (validate(value)) return { value: value as Node }
|
|
58
|
-
|
|
59
|
-
return { errors: (validate.errors ?? []).map(describe) }
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
function compile(schema: object): ValidateFunction {
|
|
63
|
-
let validate = validators.get(schema)
|
|
64
|
-
|
|
65
|
-
if (validate === undefined) {
|
|
66
|
-
validate = ajv.compile(schema)
|
|
67
|
-
validators.set(schema, validate)
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return validate
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/** Where the fault is and what it is, as one line: `foo/0: must be integer`. */
|
|
74
|
-
function describe(error: ErrorObject): string {
|
|
75
|
-
const at = error.instancePath.replace(/^\//, '')
|
|
76
|
-
const said = error.message ?? 'is invalid'
|
|
77
|
-
|
|
78
|
-
return at === '' ? said : `${at}: ${said}`
|
|
79
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { ChevronRight, KeyRound } from '@lucide/svelte'
|
|
3
|
-
import * as Item from '$ui/item'
|
|
4
|
-
import { base } from '$app/paths'
|
|
5
|
-
import { DEFAULT, split } from './ui'
|
|
6
|
-
import { holds } from './read'
|
|
7
|
-
import { dict } from './intl'
|
|
8
|
-
import type { Props } from './Row'
|
|
9
|
-
|
|
10
|
-
const { configuration, class: className }: Props = $props()
|
|
11
|
-
|
|
12
|
-
const name = $derived(split(configuration.component))
|
|
13
|
-
const secret = $derived(holds(configuration.configuration))
|
|
14
|
-
</script>
|
|
15
|
-
|
|
16
|
-
<!-- the row is the link, which is what the item's own `[a]:hover` styling expects -->
|
|
17
|
-
<Item.Root variant="outline" size="sm" class={className}>
|
|
18
|
-
{#snippet child({ props })}
|
|
19
|
-
<a {...props} id="configurations-{configuration.id}-link" href="{base}/{configuration.id}/">
|
|
20
|
-
<Item.Content class="min-w-0">
|
|
21
|
-
<!-- the name is one string; the component spaces its children by default, and a
|
|
22
|
-
name too long for its column ends in an ellipsis rather than wrapping -->
|
|
23
|
-
<Item.Title class="w-full min-w-0 gap-0" title={configuration.component}>
|
|
24
|
-
<span class="truncate">
|
|
25
|
-
{#if name.namespace !== DEFAULT}<span class="text-muted-foreground"
|
|
26
|
-
>{name.namespace}.</span
|
|
27
|
-
>{/if}{name.component}
|
|
28
|
-
</span>
|
|
29
|
-
|
|
30
|
-
<!-- that the component keeps a secret is worth saying on the row; which one it
|
|
31
|
-
is, and what it stands for, is the screen's business -->
|
|
32
|
-
{#if secret}
|
|
33
|
-
<KeyRound
|
|
34
|
-
class="text-muted-foreground ms-1.5 size-3.5 shrink-0"
|
|
35
|
-
aria-label={$dict.value.secret}
|
|
36
|
-
/>
|
|
37
|
-
{/if}
|
|
38
|
-
</Item.Title>
|
|
39
|
-
</Item.Content>
|
|
40
|
-
|
|
41
|
-
<ChevronRight class="size-4 shrink-0 opacity-60" />
|
|
42
|
-
</a>
|
|
43
|
-
{/snippet}
|
|
44
|
-
</Item.Root>
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { ClassValue } from 'svelte/elements'
|
|
2
|
-
import type { Configuration } from '@/configuration'
|
|
3
|
-
|
|
4
|
-
export type ConfigurationLike = Pick<Configuration, 'id' | 'component' | 'configuration'>
|
|
5
|
-
|
|
6
|
-
export interface Props {
|
|
7
|
-
configuration: ConfigurationLike
|
|
8
|
-
class?: ClassValue
|
|
9
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { KeyRound } from '@lucide/svelte'
|
|
3
|
-
import { read, ITEM } from './read'
|
|
4
|
-
import { dict } from './intl'
|
|
5
|
-
import type { Props } from './Value'
|
|
6
|
-
|
|
7
|
-
const { value, class: className }: Props = $props()
|
|
8
|
-
|
|
9
|
-
const lines = $derived(read(value))
|
|
10
|
-
</script>
|
|
11
|
-
|
|
12
|
-
<!-- the value as it is held, not as a form would take it: a secret is a reference, and a
|
|
13
|
-
reference is all there is to show -->
|
|
14
|
-
<div
|
|
15
|
-
data-scrollable
|
|
16
|
-
class={[
|
|
17
|
-
'bg-muted/50 overflow-auto rounded-md p-3 font-mono text-xs whitespace-nowrap',
|
|
18
|
-
className,
|
|
19
|
-
]}
|
|
20
|
-
>
|
|
21
|
-
{#each lines as line, at (at)}
|
|
22
|
-
<div style:padding-inline-start="{line.depth}rem">
|
|
23
|
-
{#if line.key === ITEM}<span class="text-muted-foreground">-</span>{:else}{line.key}<span
|
|
24
|
-
class="text-muted-foreground">:</span
|
|
25
|
-
>{/if}{#if line.secret}
|
|
26
|
-
<span class="text-muted-foreground inline-flex items-center gap-1 align-middle">
|
|
27
|
-
<KeyRound class="size-3" aria-hidden="true" />
|
|
28
|
-
{$dict.value.secret}
|
|
29
|
-
</span>
|
|
30
|
-
{:else if line.value !== null} {line.value}{/if}
|
|
31
|
-
</div>
|
|
32
|
-
{/each}
|
|
33
|
-
</div>
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export { default as Configurations } from './Configurations.svelte'
|
|
2
|
-
export { default as Row } from './Row.svelte'
|
|
3
|
-
export { default as Value } from './Value.svelte'
|
|
4
|
-
export { default as Create } from './Create.svelte'
|
|
5
|
-
export type { Props as ConfigurationsProps } from './Configurations'
|
|
6
|
-
export type { Props as RowProps, ConfigurationLike } from './Row'
|
|
7
|
-
export { query, only, matches, split, DEFAULT } from './ui'
|
|
8
|
-
export { read, secret, holds, ITEM } from './read'
|
|
9
|
-
export type { Line } from './read'
|