@marianmeres/stuic 1.14.0 → 1.16.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.
@@ -61,6 +61,7 @@ export let rounded = ButtonConfig.defaultRounded;
61
61
  export let variant = ButtonConfig.defaultVariant;
62
62
  export let square = false;
63
63
  export let disabled = false;
64
+ export let value = void 0;
64
65
  const _whitelist = ["xs", "sm", "md", "lg", "xl"];
65
66
  export let size = ButtonConfig.defaultSize;
66
67
  $:
@@ -81,7 +82,6 @@ $:
81
82
  //
82
83
  ButtonConfig.class,
83
84
  //
84
- // variant && ButtonConfig.variant?.[variant],
85
85
  variant && `${variant || ""}`.split(" ").reduce((m, v) => {
86
86
  m += ButtonConfig.variant?.[v] + " ";
87
87
  return m;
@@ -99,6 +99,10 @@ $:
99
99
  class={buttonClass}
100
100
  {...$$restProps}
101
101
  role="button"
102
+ data-size={size}
103
+ data-shadow={shadow}
104
+ data-rounded={rounded}
105
+ data-variant={variant}
102
106
  on:click
103
107
  on:change
104
108
  on:keydown
@@ -116,6 +120,11 @@ $:
116
120
  {type}
117
121
  {disabled}
118
122
  class={buttonClass}
123
+ {value}
124
+ data-size={size}
125
+ data-shadow={shadow}
126
+ data-rounded={rounded}
127
+ data-variant={variant}
119
128
  {...$$restProps}
120
129
  on:click
121
130
  on:change
@@ -49,6 +49,7 @@ declare const __propDef: {
49
49
  variant?: string | undefined;
50
50
  square?: boolean | undefined;
51
51
  disabled?: boolean | undefined;
52
+ value?: string | undefined;
52
53
  size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
53
54
  };
54
55
  events: {
@@ -0,0 +1,130 @@
1
+ <script context="module">import { twMerge } from "tailwind-merge";
2
+ export class SwitchConfig {
3
+ static defaultSize = "md";
4
+ static defaultVariant = void 0;
5
+ static presetBase = `
6
+ relative inline-flex flex-shrink-0 items-center
7
+ m-2
8
+ rounded-full cursor-pointer
9
+ transition-colors duration-100
10
+
11
+ hover:brightness-[1.05] active:brightness-[0.95]
12
+ disabled:!cursor-not-allowed disabled:!opacity-50 disabled:hover:brightness-100
13
+
14
+ bg-zinc-300 dark:bg-zinc-700
15
+ data-[checked=true]:bg-zinc-700 dark:data-[checked=true]:bg-zinc-300
16
+ `.trim();
17
+ static presetsSize = {
18
+ xs: "h-4 w-7",
19
+ sm: "h-5 w-9",
20
+ md: "h-6 w-11",
21
+ lg: "h-7 w-14",
22
+ xl: "h-8 w-16"
23
+ };
24
+ static class = "";
25
+ // to be defined at consumer level...
26
+ static variant = {};
27
+ // DOT
28
+ static presetBaseDot = `
29
+ block flex items-center justify-center
30
+ translate-x-1 rounded-full
31
+ transition-all duration-100
32
+ shadow
33
+ bg-white dark:bg-black
34
+ text-black dark:text-white
35
+ `.trim();
36
+ static presetsSizeDot = {
37
+ // size + translate-x = width
38
+ xs: "size-2 data-[checked=true]:translate-x-4",
39
+ sm: "size-3 data-[checked=true]:translate-x-5",
40
+ md: "size-4 data-[checked=true]:translate-x-6",
41
+ lg: "size-5 data-[checked=true]:translate-x-8",
42
+ xl: "size-6 data-[checked=true]:translate-x-9"
43
+ };
44
+ static classDot = "";
45
+ // to be defined at consumer level...
46
+ static variantDot = {};
47
+ }
48
+ </script>
49
+
50
+ <script>import { createEventDispatcher } from "svelte";
51
+ let _class = "";
52
+ export { _class as class };
53
+ export let classDot = "";
54
+ export let label = "";
55
+ export let checked = false;
56
+ export let disabled = false;
57
+ export let tabindex = 0;
58
+ export let variant = SwitchConfig.defaultVariant;
59
+ export let stopPropagation = true;
60
+ export let preventDefault = false;
61
+ const _defaultNoopHook = () => Promise.resolve(void 0);
62
+ export let preHook = _defaultNoopHook;
63
+ const _whitelist = ["xs", "sm", "md", "lg", "xl"];
64
+ export let size = SwitchConfig.defaultSize;
65
+ $:
66
+ if (!_whitelist.includes(size))
67
+ size = SwitchConfig.defaultSize;
68
+ let switchClass;
69
+ $:
70
+ switchClass = twMerge(
71
+ SwitchConfig.presetBase,
72
+ SwitchConfig.presetsSize[size],
73
+ SwitchConfig.class,
74
+ variant && `${variant || ""}`.split(" ").reduce((m, v) => {
75
+ m += SwitchConfig.variant?.[v] + " ";
76
+ return m;
77
+ }, ""),
78
+ _class
79
+ );
80
+ let dotClass;
81
+ $:
82
+ dotClass = twMerge(
83
+ SwitchConfig.presetBaseDot,
84
+ SwitchConfig.presetsSizeDot[size],
85
+ SwitchConfig.classDot,
86
+ classDot
87
+ );
88
+ const dispatch = createEventDispatcher();
89
+ </script>
90
+
91
+ <button
92
+ class={switchClass}
93
+ type="button"
94
+ role="switch"
95
+ aria-checked={checked}
96
+ class:checked
97
+ data-checked={checked}
98
+ data-size={size}
99
+ {tabindex}
100
+ {disabled}
101
+ on:click={async (e) => {
102
+ stopPropagation && e.stopPropagation();
103
+ preventDefault && e.preventDefault();
104
+
105
+ // ability to break execution (do the change) by returning explicit `false`
106
+ if (typeof preHook === 'function' && (await preHook(checked)) === false) {
107
+ return false;
108
+ }
109
+
110
+ checked = !checked;
111
+ dispatch('change', checked);
112
+ }}
113
+ on:click
114
+ on:keydown
115
+ on:keyup
116
+ on:touchstart|passive
117
+ on:touchend
118
+ on:touchcancel
119
+ on:mouseenter
120
+ on:mouseleave
121
+ >
122
+ {#if label}<span class="sr-only">{@html label}</span>{/if}
123
+ <span aria-hidden="true" data-checked={checked} data-size={size} class={dotClass}>
124
+ {#if checked}
125
+ <slot name="on" />
126
+ {:else}
127
+ <slot name="off" />
128
+ {/if}
129
+ </span>
130
+ </button>
@@ -0,0 +1,63 @@
1
+ import { SvelteComponent } from "svelte";
2
+ export declare class SwitchConfig {
3
+ static defaultSize: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
4
+ static defaultVariant: string | undefined;
5
+ static presetBase: string;
6
+ static presetsSize: {
7
+ xs: string;
8
+ sm: string;
9
+ md: string;
10
+ lg: string;
11
+ xl: string;
12
+ };
13
+ static class: string;
14
+ static variant: Record<string, string>;
15
+ static presetBaseDot: string;
16
+ static presetsSizeDot: {
17
+ xs: string;
18
+ sm: string;
19
+ md: string;
20
+ lg: string;
21
+ xl: string;
22
+ };
23
+ static classDot: string;
24
+ static variantDot: Record<string, string>;
25
+ }
26
+ declare const __propDef: {
27
+ props: {
28
+ class?: string | undefined;
29
+ classDot?: string | undefined;
30
+ label?: string | undefined;
31
+ checked?: boolean | undefined;
32
+ disabled?: boolean | undefined;
33
+ tabindex?: number | undefined;
34
+ variant?: string | undefined;
35
+ stopPropagation?: boolean | undefined;
36
+ preventDefault?: boolean | undefined;
37
+ preHook?: ((oldValue: boolean) => Promise<void | boolean>) | undefined;
38
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
39
+ };
40
+ events: {
41
+ click: MouseEvent;
42
+ keydown: KeyboardEvent;
43
+ keyup: KeyboardEvent;
44
+ touchstart: TouchEvent;
45
+ touchend: TouchEvent;
46
+ touchcancel: TouchEvent;
47
+ mouseenter: MouseEvent;
48
+ mouseleave: MouseEvent;
49
+ change: CustomEvent<any>;
50
+ } & {
51
+ [evt: string]: CustomEvent<any>;
52
+ };
53
+ slots: {
54
+ on: {};
55
+ off: {};
56
+ };
57
+ };
58
+ export type SwitchProps = typeof __propDef.props;
59
+ export type SwitchEvents = typeof __propDef.events;
60
+ export type SwitchSlots = typeof __propDef.slots;
61
+ export default class Switch extends SvelteComponent<SwitchProps, SwitchEvents, SwitchSlots> {
62
+ }
63
+ export {};
package/dist/index.d.ts CHANGED
@@ -6,6 +6,7 @@ export { default as LocalColorScheme } from './components/ColorScheme/LocalColor
6
6
  export { ColorScheme } from './components/ColorScheme/color-scheme.js';
7
7
  export { default as Drawer, createDrawerStore } from './components/Drawer/Drawer.svelte';
8
8
  export { default as HoverExpandableWidth } from './components/HoverExpandableWidth/HoverExpandableWidth.svelte';
9
+ export { default as Switch } from './components/Switch/Switch.svelte';
9
10
  export { default as X } from './components/X/X.svelte';
10
11
  export { clickOutside } from './actions/click-outside.js';
11
12
  export { focusTrap } from './actions/focus-trap.js';
package/dist/index.js CHANGED
@@ -14,6 +14,8 @@ export { default as Drawer, createDrawerStore } from './components/Drawer/Drawer
14
14
  //
15
15
  export { default as HoverExpandableWidth } from './components/HoverExpandableWidth/HoverExpandableWidth.svelte';
16
16
  //
17
+ export { default as Switch } from './components/Switch/Switch.svelte';
18
+ //
17
19
  export { default as X } from './components/X/X.svelte';
18
20
  // actions
19
21
  export { clickOutside } from './actions/click-outside.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marianmeres/stuic",
3
- "version": "1.14.0",
3
+ "version": "1.16.0",
4
4
  "scripts": {
5
5
  "dev": "vite dev",
6
6
  "build": "vite build && npm run package && node ./scripts/date.js",
@@ -31,7 +31,7 @@
31
31
  "svelte": "^4.0.0"
32
32
  },
33
33
  "devDependencies": {
34
- "@marianmeres/icons-fns": "^2.0.2",
34
+ "@marianmeres/icons-fns": "^2.1.0",
35
35
  "@marianmeres/parse-boolean": "^1.1.7",
36
36
  "@marianmeres/random-human-readable": "^1.6.1",
37
37
  "@marianmeres/release": "^1.1.2",