@axel669/zephyr 0.3.8 → 0.4.4-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/package.json +40 -33
  2. package/src/async/button.svelte +16 -8
  3. package/src/composed/data-table/th.svelte +2 -2
  4. package/src/composed/data-table.svelte +4 -3
  5. package/src/composed/form.svelte +60 -0
  6. package/src/composed/table-functions.js +3 -1
  7. package/src/composed/toast/message.svelte +15 -38
  8. package/src/control/button.svelte +1 -1
  9. package/src/control/input.svelte +89 -109
  10. package/src/control/label.svelte +1 -1
  11. package/src/control/link.svelte +32 -32
  12. package/src/control/radio-group.svelte +21 -0
  13. package/src/control/select.svelte +5 -5
  14. package/src/control/tabs.svelte +9 -21
  15. package/src/control/toggle.svelte +2 -2
  16. package/src/data-display/avatar.svelte +4 -1
  17. package/src/data-display/badge.svelte +1 -1
  18. package/src/data-display/chip.svelte +1 -1
  19. package/src/data-display/popover.svelte +25 -25
  20. package/src/data-display/progress.svelte +27 -27
  21. package/src/data-display/table.svelte +1 -1
  22. package/src/dialogs/confirm.svelte +3 -3
  23. package/src/hash.js +14 -14
  24. package/src/index.mjs +11 -1
  25. package/src/info/notification.svelte +28 -16
  26. package/src/info/titlebar.svelte +22 -5
  27. package/src/layout/dialog.svelte +1 -1
  28. package/src/layout/drawer.svelte +49 -49
  29. package/src/layout/flex.svelte +0 -4
  30. package/src/layout/grid.svelte +4 -4
  31. package/src/layout/paper.svelte +56 -47
  32. package/src/routing/route.svelte +48 -0
  33. package/src/routing/routing.js +62 -0
  34. package/src/routing/title.svelte +26 -0
  35. package/src/spinner/circle-spinner.svelte +2 -1
  36. package/src/spinner/hexagon-spinner.svelte +2 -1
  37. package/src/text.svelte +2 -4
  38. package/src/wsx.mjs +25 -24
  39. package/src/async/button.md +0 -27
  40. package/src/async/load-zone.md +0 -42
  41. package/src/composed/data-table/th.md +0 -21
  42. package/src/composed/data-table.md +0 -86
  43. package/src/composed/entry-button.md +0 -44
  44. package/src/composed/toast.md +0 -45
  45. package/src/control/button.md +0 -41
  46. package/src/control/input.md +0 -87
  47. package/src/control/label.md +0 -48
  48. package/src/control/link.md +0 -50
  49. package/src/control/radio.md +0 -58
  50. package/src/control/radio.svelte +0 -28
  51. package/src/control/select.md +0 -70
  52. package/src/control/tabs.md +0 -47
  53. package/src/control/toggle.md +0 -61
  54. package/src/data-display/avatar.md +0 -36
  55. package/src/data-display/badge.md +0 -30
  56. package/src/data-display/chip.md +0 -36
  57. package/src/data-display/details.md +0 -42
  58. package/src/data-display/popover.md +0 -32
  59. package/src/data-display/progress.md +0 -46
  60. package/src/data-display/table.md +0 -59
  61. package/src/data-display/tooltip.md +0 -29
  62. package/src/dialogs/alert.md +0 -42
  63. package/src/dialogs/confirm.md +0 -56
  64. package/src/functions.md +0 -108
  65. package/src/info/icon.md +0 -21
  66. package/src/info/notification.md +0 -36
  67. package/src/info/titlebar.md +0 -75
  68. package/src/info/toaster.md +0 -26
  69. package/src/layout/dialog.md +0 -43
  70. package/src/layout/drawer.md +0 -70
  71. package/src/layout/flex.md +0 -43
  72. package/src/layout/grid.md +0 -61
  73. package/src/layout/modal.md +0 -50
  74. package/src/layout/paper.md +0 -94
  75. package/src/layout/screen.md +0 -33
  76. package/src/spinner/spinners.md +0 -22
  77. package/src/text.md +0 -34
@@ -1,28 +1,19 @@
1
1
  <svelte:options immutable />
2
2
 
3
3
  <script>
4
+ import { writable } from "svelte/store"
5
+
4
6
  import wsx from "../wsx.mjs"
5
7
  import { handler$ } from "../handler$.mjs"
6
8
 
7
- export let color = "@primary"
9
+ export let color = "@default"
8
10
  export let options = []
9
11
  export let vertical = false
10
- export let solid = false
12
+ export let fill = false
11
13
  export let value
12
14
 
13
- $: index = options.findIndex(item => item.value === value)
14
-
15
- const set = handler$(
16
- (next) => {
17
- if (value === next) {
18
- return
19
- }
20
- value = next
21
- }
22
- )
23
-
24
15
  $: wind = {
25
- "$solid": solid,
16
+ "$fill": fill,
26
17
  "$color": color,
27
18
  $vert: vertical,
28
19
  ...$$restProps,
@@ -32,12 +23,9 @@
32
23
  <!-- svelte-ignore a11y-click-events-have-key-events -->
33
24
  <ws-tabs use:wsx={wind} role="tablist">
34
25
  {#each options as tab, i}
35
- <!-- svelte-ignore a11y-interactive-supports-focus -->
36
- <ws-tab use:wsx={{"$tab-selected": index === i}}
37
- on:click={set(tab.value)} role="tab">
38
- <slot {tab} selected={index === i}>
39
- {tab.label}
40
- </slot>
41
- </ws-tab>
26
+ <label>
27
+ <input type="radio" value={tab.value} bind:group={value} />
28
+ <ws-tab>{tab.label}</ws-tab>
29
+ </label>
42
30
  {/each}
43
31
  </ws-tabs>
@@ -13,14 +13,14 @@
13
13
  export let reverse = false
14
14
 
15
15
  $: container = {
16
- "@toggle": true,
16
+ "@@toggle": true,
17
17
  "$flat": flat,
18
18
  "$color": color,
19
19
  "fl.dir": reverse ? "row-reverse" : false,
20
20
  ...$$restProps,
21
21
  }
22
22
  $: input = {
23
- "@switch": checkbox === false
23
+ "@@switch": checkbox === false
24
24
  }
25
25
 
26
26
  const updateGroup = (checked) => {
@@ -18,7 +18,10 @@
18
18
 
19
19
  <ws-avatar use:wsx={wind}>
20
20
  {#if image !== null}
21
- <img src={image} {alt} />
21
+ <!-- svelte-ignore a11y-missing-attribute -->
22
+ <object data={image} type="image/png">
23
+ {alt}
24
+ </object>
22
25
  {:else}
23
26
  {text}
24
27
  {/if}
@@ -3,7 +3,7 @@
3
3
  <script>
4
4
  import wsx from "../wsx.mjs"
5
5
 
6
- export let color = "@default"
6
+ export let color = null
7
7
  export let text = ""
8
8
 
9
9
  $: wind = { "$color": color, ...$$restProps }
@@ -16,7 +16,7 @@
16
16
  $: wind = {
17
17
  [type]: true,
18
18
  "$color": color,
19
- $click: clickable,
19
+ "@@click": clickable,
20
20
  ...$$restProps
21
21
  }
22
22
  </script>
@@ -1,25 +1,25 @@
1
- <svelte:options immutable />
2
-
3
- <script>
4
- import { fade } from "svelte/transition"
5
- import wsx from "../wsx.mjs"
6
-
7
- let visible = false
8
- const show = () => visible = true
9
- const hide = () => visible = false
10
- const anim = { duration: 250 }
11
-
12
- $: wind = {
13
- $show: true,
14
- ...$$restProps,
15
- }
16
- </script>
17
-
18
- <ws-popover use:wsx={wind}>
19
- <slot {show} />
20
- {#if visible}
21
- <wind-content slot="content" ws-x="[inset 0px]" transition:fade={anim}>
22
- <slot name="content" {hide} />
23
- </wind-content>
24
- {/if}
25
- </ws-popover>
1
+ <svelte:options immutable />
2
+
3
+ <script>
4
+ import { fade } from "svelte/transition"
5
+ import wsx from "../wsx.mjs"
6
+
7
+ let visible = false
8
+ const show = () => visible = true
9
+ const hide = () => visible = false
10
+ const anim = { duration: 250 }
11
+
12
+ $: wind = {
13
+ $show: true,
14
+ ...$$restProps,
15
+ }
16
+ </script>
17
+
18
+ <ws-popover use:wsx={wind}>
19
+ <slot {show} />
20
+ {#if visible}
21
+ <wind-content ws-x="[$content] [inset 0px]" transition:fade={anim}>
22
+ <slot name="content" {hide} />
23
+ </wind-content>
24
+ {/if}
25
+ </ws-popover>
@@ -1,27 +1,27 @@
1
- <svelte:options immutable />
2
-
3
- <script>
4
- import wsx from "../wsx.mjs"
5
-
6
- export let value = 0
7
- export let max = 1
8
- export let color = "default"
9
- export let outline = false
10
- export let row = false
11
- export let label = null
12
-
13
- $: wind = {
14
- "@progress": true,
15
- "$outline": outline,
16
- "$color": color,
17
- $row: row,
18
- ...$$restProps,
19
- }
20
- </script>
21
-
22
- <label use:wsx={wind}>
23
- {#if label}
24
- <span ws-x="[$progress-label] [t-ws nowrap]">{label}</span>
25
- {/if}
26
- <progress {value} {max} />
27
- </label>
1
+ <svelte:options immutable />
2
+
3
+ <script>
4
+ import wsx from "../wsx.mjs"
5
+
6
+ export let value = 0
7
+ export let max = 1
8
+ export let color = "default"
9
+ export let outline = false
10
+ export let row = false
11
+ export let label = null
12
+
13
+ $: wind = {
14
+ "@@progress": true,
15
+ "$outline": outline,
16
+ "$color": color,
17
+ $row: row,
18
+ ...$$restProps,
19
+ }
20
+ </script>
21
+
22
+ <label use:wsx={wind}>
23
+ {#if label}
24
+ <span ws-x="[$progress-label] [t.ws nowrap]">{label}</span>
25
+ {/if}
26
+ <progress {value} {max} />
27
+ </label>
@@ -3,7 +3,7 @@
3
3
  <script>
4
4
  import wsx from "../wsx.mjs"
5
5
 
6
- export let color = false
6
+ export let color = "@default"
7
7
  export let fillHeader = false
8
8
  export let data = []
9
9
 
@@ -34,11 +34,11 @@
34
34
  {message}
35
35
  </Text>
36
36
 
37
- <Grid cols="1fr 1fr" slot="footer" pad="0px">
38
- <Button on:click={cls(false)} color="danger">
37
+ <Grid cols="1fr 1fr" slot="footer" p="0px">
38
+ <Button on:click={cls(false)} color="@danger">
39
39
  {cancelText}
40
40
  </Button>
41
- <Button on:click={cls(true)} color="secondary">
41
+ <Button on:click={cls(true)} color="@secondary">
42
42
  {okText}
43
43
  </Button>
44
44
  </Grid>
package/src/hash.js CHANGED
@@ -1,14 +1,14 @@
1
- import { readable } from "svelte/store"
2
-
3
- export const hash = readable(
4
- location.hash.slice(1),
5
- (set) => {
6
- setInterval(
7
- () => set(location.hash.slice(1)),
8
- 50
9
- )
10
- }
11
- )
12
- hash.set = (value) => {
13
- location.hash = value
14
- }
1
+ import { readable } from "svelte/store"
2
+
3
+ export const hash = readable(
4
+ location.hash.slice(1),
5
+ (set) => {
6
+ window.addEventListener(
7
+ "popstate",
8
+ () => set(location.hash.slice(1))
9
+ )
10
+ }
11
+ )
12
+ hash.set = (value) => {
13
+ location.hash = value
14
+ }
package/src/index.mjs CHANGED
@@ -1,7 +1,8 @@
1
1
  export { default as Button } from "./control/button.svelte"
2
2
  export { default as Input } from "./control/input.svelte"
3
+ export { default as Label } from "./control/label.svelte"
3
4
  export { default as Link } from "./control/link.svelte"
4
- export { default as Radio } from "./control/radio.svelte"
5
+ export { default as RadioGroup } from "./control/radio-group.svelte"
5
6
  export { default as Select } from "./control/select.svelte"
6
7
  export { default as Tabs } from "./control/tabs.svelte"
7
8
  export { default as Toggle } from "./control/toggle.svelte"
@@ -40,14 +41,23 @@ export { default as Confirm } from "./dialogs/confirm.svelte"
40
41
  export { default as DataTable } from "./composed/data-table.svelte"
41
42
  export { default as TH } from "./composed/data-table/th.svelte"
42
43
  export { default as EntryButton } from "./composed/entry-button.svelte"
44
+ export { default as Form } from "./composed/form.svelte"
43
45
  export { default as Toast } from "./composed/toast.svelte"
44
46
 
45
47
  export { default as AsyncButton } from "./async/button.svelte"
46
48
  export { default as LoadZone } from "./async/load-zone.svelte"
47
49
 
50
+ export { default as Route } from "./routing/route.svelte"
51
+ export { default as Title } from "./routing/title.svelte"
52
+
48
53
  export { default as wsx } from "./wsx.mjs"
49
54
 
50
55
  export { hash } from "./hash.js"
51
56
 
57
+ export {
58
+ route,
59
+ stackStore,
60
+ relpath,
61
+ } from "./routing/routing.js"
52
62
  export * from "./handler$.mjs"
53
63
  export * from "./composed/table-functions.js"
@@ -1,16 +1,28 @@
1
- <script>
2
- import wsx from "../wsx.mjs"
3
-
4
- export let color = false
5
-
6
- $: wind = {
7
- "$color": color,
8
- ...$$restProps,
9
- }
10
- </script>
11
-
12
- <!-- svelte-ignore a11y-click-events-have-key-events -->
13
- <!-- svelte-ignore a11y-interactive-supports-focus -->
14
- <ws-notification use:wsx={wind} on:click role="button">
15
- <slot />
16
- </ws-notification>
1
+ <script>
2
+ import wsx from "../wsx.mjs"
3
+
4
+ export let color = false
5
+
6
+ $: wind = {
7
+ "$color": color,
8
+ ...$$restProps,
9
+ }
10
+ </script>
11
+
12
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
13
+ <!-- svelte-ignore a11y-interactive-supports-focus -->
14
+ <ws-notification use:wsx={wind} on:click role="button">
15
+ {#if $$slots.start}
16
+ <div ws-x="[$start] [grid]">
17
+ <slot name="start" />
18
+ </div>
19
+ {/if}
20
+ <div ws-x="[$notif-text]">
21
+ <slot />
22
+ </div>
23
+ {#if $$slots.end}
24
+ <div ws-x="[$end] [grid]">
25
+ <slot name="end" />
26
+ </div>
27
+ {/if}
28
+ </ws-notification>
@@ -4,15 +4,32 @@
4
4
  export let color
5
5
  export let fill = false
6
6
 
7
- $: wind = {
7
+ $: titleProps = {
8
8
  "$color": color,
9
9
  "$fill": fill,
10
- ...$$restProps
10
+ $title: true,
11
+ }
12
+ $: wind = {
13
+ ...$$restProps,
14
+ "gr.cols": "auto 1fr auto"
11
15
  }
12
16
  </script>
13
17
 
14
18
  <ws-titlebar use:wsx={wind}>
15
- <slot name="menu" />
16
- <slot name="title" />
17
- <slot name="action" />
19
+ {#if $$slots.title}
20
+ <div use:wsx={titleProps}>
21
+ <slot name="title" />
22
+ </div>
23
+ {/if}
24
+
25
+ {#if $$slots.menu}
26
+ <div ws-x="[$menu] [grid] [p 0px]">
27
+ <slot name="menu" />
28
+ </div>
29
+ {/if}
30
+ {#if $$slots.action}
31
+ <div ws-x="[$action] [grid] [p 0px]">
32
+ <slot name="action" />
33
+ </div>
34
+ {/if}
18
35
  </ws-titlebar>
@@ -16,7 +16,7 @@
16
16
 
17
17
  <!-- svelte-ignore a11y-click-events-have-key-events -->
18
18
  <!-- svelte-ignore a11y-no-noninteractive-element-interactions -->
19
- <wind-wrapper transition:trick ws-x="@dialog [grid]" on:click|stopPropagation
19
+ <wind-wrapper transition:trick ws-x="@@dialog [grid]" on:click|stopPropagation
20
20
  role="dialog">
21
21
  <Paper {...$$props}>
22
22
  <slot name="header" slot="header" />
@@ -1,49 +1,49 @@
1
- <svelte:options immutable />
2
-
3
- <script context="module">
4
- const defs = {
5
- select: {
6
- "@select": true,
7
- "w.min": "35vw",
8
- grid: true,
9
- over: "hidden"
10
- },
11
- menu: {
12
- "@menu": true,
13
- },
14
- action: {
15
- "@action": true,
16
- }
17
- }
18
- </script>
19
-
20
- <script>
21
- import wsx from "../wsx.mjs"
22
-
23
- import Paper from "./paper.svelte"
24
-
25
- export let height
26
- export let type = "menu"
27
-
28
- const trick = (node, options) => ({
29
- delay: 0,
30
- duration: 250,
31
- css: () => "",
32
- })
33
-
34
- $: container = {
35
- ...defs[type],
36
- h: (type === "select") ? height : "100%",
37
- grid: true,
38
- }
39
- </script>
40
- <!-- svelte-ignore a11y-click-events-have-key-events -->
41
- <!-- svelte-ignore a11y-interactive-supports-focus -->
42
- <wind-drawer-container use:wsx={container} on:click|stopPropagation
43
- role="menubar" transition:trick>
44
- <Paper {...$$restProps}>
45
- <slot name="header" slot="header" />
46
- <slot />
47
- <slot name="footer" slot="footer" />
48
- </Paper>
49
- </wind-drawer-container>
1
+ <svelte:options immutable />
2
+
3
+ <script context="module">
4
+ const defs = {
5
+ select: {
6
+ "@@select": true,
7
+ "w.min": "35vw",
8
+ grid: true,
9
+ over: "hidden"
10
+ },
11
+ menu: {
12
+ "@@menu": true,
13
+ },
14
+ action: {
15
+ "@@action": true,
16
+ }
17
+ }
18
+ </script>
19
+
20
+ <script>
21
+ import wsx from "../wsx.mjs"
22
+
23
+ import Paper from "./paper.svelte"
24
+
25
+ export let height
26
+ export let type = "menu"
27
+
28
+ const trick = (node, options) => ({
29
+ delay: 0,
30
+ duration: 250,
31
+ css: () => "",
32
+ })
33
+
34
+ $: container = {
35
+ ...defs[type],
36
+ h: (type === "select") ? height : "100%",
37
+ grid: true,
38
+ }
39
+ </script>
40
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
41
+ <!-- svelte-ignore a11y-interactive-supports-focus -->
42
+ <wind-drawer-container use:wsx={container} on:click|stopPropagation
43
+ role="menubar" transition:trick>
44
+ <Paper r="0px" {...$$restProps}>
45
+ <slot name="header" slot="header" />
46
+ <slot />
47
+ <slot name="footer" slot="footer" />
48
+ </Paper>
49
+ </wind-drawer-container>
@@ -4,8 +4,6 @@
4
4
  import wsx from "../wsx.mjs"
5
5
 
6
6
  export let direction = false
7
- export let pad = false
8
- export let gap = false
9
7
  export let cross = "stretch"
10
8
  export let main = "start"
11
9
  export let scrollable = false
@@ -14,8 +12,6 @@
14
12
  "fl.dir": direction,
15
13
  "fl.cross": cross,
16
14
  "fl.main": main,
17
- p: pad,
18
- gap: gap,
19
15
  over: (scrollable === true) ? "auto" : null,
20
16
  ...$$restProps
21
17
  }
@@ -4,12 +4,12 @@
4
4
  import wsx from "../wsx.mjs"
5
5
 
6
6
  export let direction = false
7
- export let pad = false
8
- export let gap = false
9
7
  export let cols = null
10
8
  export let rows = null
11
9
  export let autoCol = false
12
10
  export let autoRow = false
11
+ export let colsFit = false
12
+ export let colsFill = false
13
13
  export let scrollable = false
14
14
 
15
15
  $: wind = {
@@ -18,8 +18,8 @@
18
18
  "gr.rows": rows?.join?.(" ") ?? rows ?? false,
19
19
  "gr.cols.a": autoCol,
20
20
  "gr.rows.a": autoRow,
21
- p: pad,
22
- gap: gap,
21
+ "gr.cols-fit": colsFit,
22
+ "gr.cols-fill": colsFill,
23
23
  over: (scrollable === true) ? "auto" : null,
24
24
  ...$$restProps
25
25
  }
@@ -1,47 +1,56 @@
1
- <svelte:options immutable />
2
-
3
- <script>
4
- import Flex from "./flex.svelte"
5
- import wsx from "../wsx.mjs"
6
-
7
- export let color
8
- export let card = false
9
- export let square = false
10
- export let layout = Flex
11
- export let scrollable = true
12
-
13
- $: props = Object.entries($$restProps).reduce(
14
- (p, [key, value]) => {
15
- const [target, name] =
16
- (key.startsWith("l-") === true)
17
- ? [ p.layout, key.slice(2) ]
18
- : [ p.paper, key ]
19
- target[name] = value
20
- return p
21
- },
22
- { layout: {}, paper: {} }
23
- )
24
-
25
- $: layoutProps = {
26
- over: scrollable ? "auto" : false,
27
- ...props.layout,
28
- }
29
- $: wind = {
30
- "$color": color,
31
- "$outline": card,
32
- r: square && "0px",
33
- ...props.paper,
34
- }
35
- </script>
36
-
37
- <ws-paper use:wsx={wind}>
38
- <slot name="header" />
39
- {#if $$slots.content}
40
- <slot name="content" slot="content" />
41
- {:else}
42
- <svelte:component this={layout} {...layoutProps} slot="content">
43
- <slot />
44
- </svelte:component>
45
- {/if}
46
- <slot name="footer" />
47
- </ws-paper>
1
+ <svelte:options immutable />
2
+
3
+ <script>
4
+ import Flex from "./flex.svelte"
5
+ import wsx from "../wsx.mjs"
6
+
7
+ export let color
8
+ export let card = false
9
+ export let square = false
10
+ export let layout = Flex
11
+ export let scrollable = true
12
+
13
+ $: props = Object.entries($$restProps).reduce(
14
+ (p, [key, value]) => {
15
+ const [target, name] =
16
+ (key.startsWith("l-") === true)
17
+ ? [ p.layout, key.slice(2) ]
18
+ : [ p.paper, key ]
19
+ target[name] = value
20
+ return p
21
+ },
22
+ { layout: {}, paper: {} }
23
+ )
24
+
25
+ $: layoutProps = {
26
+ over: scrollable ? "auto" : false,
27
+ $content: true,
28
+ ...props.layout,
29
+ }
30
+ $: wind = {
31
+ "$color": color,
32
+ "$outline": card,
33
+ r: square && "0px",
34
+ ...props.paper,
35
+ }
36
+ </script>
37
+
38
+ <ws-paper use:wsx={wind}>
39
+ {#if $$slots.header}
40
+ <div ws-x="[$header] [grid] [p 0px]">
41
+ <slot name="header" />
42
+ </div>
43
+ {/if}
44
+ {#if $$slots.content}
45
+ <slot name="content" />
46
+ {:else}
47
+ <svelte:component this={layout} {...layoutProps}>
48
+ <slot />
49
+ </svelte:component>
50
+ {/if}
51
+ {#if $$slots.footer}
52
+ <div ws-x="[$footer] [grid] [p 0px]">
53
+ <slot name="footer" />
54
+ </div>
55
+ {/if}
56
+ </ws-paper>