noph-ui 0.10.12 → 0.11.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.
package/README.md CHANGED
@@ -69,15 +69,14 @@ Beta (No breaking changes expected)
69
69
 
70
70
  In progress (Breaking changes expected)
71
71
 
72
- - Chips
72
+ - Chips (Docs missing)
73
73
  - Dialogs (Fullscreen + Docs missing)
74
74
  - Menus (Positioning missing + Docs missing)
75
- - Navigation Rail (Badge is missing)
75
+ - Navigation Drawer (Docs missing)
76
+ - Navigation Rail (Badge is missing + Docs missing)
76
77
  - Tooltips (Positioning missing)
77
- - Select
78
+ - Select (iOS issues)
78
79
 
79
80
  Pending
80
81
 
81
- - Sliders
82
- - Switch
83
82
  - Tabs
@@ -1,7 +1,6 @@
1
1
  <script lang="ts">
2
2
  import Ripple from '../ripple/Ripple.svelte'
3
3
  import Tooltip from '../tooltip/Tooltip.svelte'
4
- import { generateUUIDv4 } from '../utils.js'
5
4
  import type { HTMLAnchorAttributes, HTMLButtonAttributes } from 'svelte/elements'
6
5
  import type { ButtonProps } from './types.ts'
7
6
 
@@ -17,7 +16,7 @@
17
16
  ...attributes
18
17
  }: ButtonProps = $props()
19
18
 
20
- let tooltipId = $state(title ? generateUUIDv4() : '')
19
+ let tooltipId = $state(title ? crypto.randomUUID() : '')
21
20
 
22
21
  const isButton = (obj: unknown): obj is HTMLButtonAttributes => {
23
22
  return (obj as HTMLAnchorAttributes).href === undefined
@@ -1,9 +1,12 @@
1
1
  <script lang="ts">
2
2
  import Ripple from '../ripple/Ripple.svelte'
3
3
  import Tooltip from '../tooltip/Tooltip.svelte'
4
- import { generateUUIDv4 } from '../utils.js'
5
4
  import type { IconButtonProps } from './types.ts'
6
- import type { HTMLAnchorAttributes, HTMLButtonAttributes } from 'svelte/elements'
5
+ import type {
6
+ HTMLAnchorAttributes,
7
+ HTMLButtonAttributes,
8
+ MouseEventHandler,
9
+ } from 'svelte/elements'
7
10
 
8
11
  let {
9
12
  variant = 'text',
@@ -15,10 +18,11 @@
15
18
  selected = false,
16
19
  selectedIcon,
17
20
  keepTooltipOnClick,
21
+ onclick,
18
22
  ...attributes
19
23
  }: IconButtonProps = $props()
20
24
 
21
- let tooltipId = $state(title ? generateUUIDv4() : '')
25
+ let tooltipId = $state(title ? crypto.randomUUID() : '')
22
26
  let selectedState = $state(!toggle || selected)
23
27
  let touchEl: HTMLSpanElement | undefined = $state()
24
28
 
@@ -28,14 +32,6 @@
28
32
  const isLink = (obj: unknown): obj is HTMLAnchorAttributes => {
29
33
  return (obj as HTMLAnchorAttributes).href !== undefined
30
34
  }
31
-
32
- $effect(() => {
33
- if (toggle) {
34
- element?.addEventListener('click', () => {
35
- selectedState = !selectedState
36
- })
37
- }
38
- })
39
35
  </script>
40
36
 
41
37
  {#snippet content()}
@@ -58,6 +54,12 @@
58
54
  {...attributes as HTMLButtonAttributes}
59
55
  {disabled}
60
56
  bind:this={element}
57
+ onclick={(event) => {
58
+ if (toggle) {
59
+ selectedState = !selectedState
60
+ }
61
+ ;(onclick as MouseEventHandler<HTMLButtonElement>)?.(event)
62
+ }}
61
63
  class={[
62
64
  'np-icon-button',
63
65
  disabled ? `${variant}-disabled disabled` : `${variant} enabled`,
@@ -123,8 +125,10 @@
123
125
  }
124
126
  .text-disabled {
125
127
  border-radius: var(--np-icon-button-container-shape, var(--np-shape-corner-full));
126
- height: var(--np-icon-button-container-height, 2.5rem);
127
- width: var(--np-icon-button-container-width, 2.5rem);
128
+ --_button-height: var(--np-icon-button-container-height, 2.5rem);
129
+ --_button-width: var(--np-icon-button-container-width, 2.5rem);
130
+ height: var(--_button-height);
131
+ width: var(--_button-width);
128
132
  --_icon-size: var(--np-icon-button-icon-size);
129
133
  }
130
134
  .filled-disabled {
@@ -174,8 +178,10 @@
174
178
  --np-ripple-pressed-color: var(--np-icon-button-icon-color, var(--np-color-on-surface-variant));
175
179
  color: var(--np-icon-button-icon-color, var(--np-color-on-surface-variant));
176
180
  border-radius: var(--np-icon-button-container-shape, var(--np-shape-corner-full));
177
- height: var(--np-icon-button-container-height, 2.5rem);
178
- width: var(--np-icon-button-container-width, 2.5rem);
181
+ --_button-height: var(--np-icon-button-container-height, 2.5rem);
182
+ --_button-width: var(--np-icon-button-container-width, 2.5rem);
183
+ height: var(--_button-height);
184
+ width: var(--_button-width);
179
185
  --_icon-size: var(--np-icon-button-icon-size);
180
186
  }
181
187
  .text.toggle {
@@ -253,7 +259,7 @@
253
259
  }
254
260
  .np-touch {
255
261
  position: absolute;
256
- height: max(48px, 100%);
257
- width: max(48px, 100%);
262
+ height: max(calc(var(--_button-height, 40px) + 8px), 100%);
263
+ width: max(calc(var(--_button-width, 40px) + 8px), 100%);
258
264
  }
259
265
  </style>
@@ -1,5 +1,6 @@
1
1
  <script lang="ts">
2
2
  import Ripple from '../ripple/Ripple.svelte'
3
+ import type { FocusEventHandler } from 'svelte/elements'
3
4
  import type { CardProps } from './types.ts'
4
5
 
5
6
  let {
@@ -12,6 +13,8 @@
12
13
  supportingText,
13
14
  action,
14
15
  children,
16
+ onblur,
17
+ onfocus,
15
18
  ...attributes
16
19
  }: CardProps = $props()
17
20
 
@@ -28,16 +31,6 @@
28
31
  })
29
32
  }
30
33
  })
31
- $effect(() => {
32
- if (element) {
33
- element.addEventListener('focus', () => {
34
- focused = true
35
- })
36
- element.addEventListener('blur', () => {
37
- focused = false
38
- })
39
- }
40
- })
41
34
  </script>
42
35
 
43
36
  {#snippet content()}
@@ -77,6 +70,12 @@
77
70
  {...attributes}
78
71
  bind:this={element}
79
72
  aria-disabled={disabled}
73
+ onfocus={(event) => {
74
+ ;(onfocus as FocusEventHandler<HTMLDivElement>)?.(event)
75
+ }}
76
+ onblur={(event) => {
77
+ ;(onblur as FocusEventHandler<HTMLDivElement>)?.(event)
78
+ }}
80
79
  class={[
81
80
  'np-card-container',
82
81
  `np-card-${variant}`,
@@ -91,6 +90,14 @@
91
90
  aria-disabled={disabled}
92
91
  {...attributes}
93
92
  bind:this={element}
93
+ onfocus={(event) => {
94
+ focused = true
95
+ ;(onfocus as FocusEventHandler<HTMLButtonElement>)?.(event)
96
+ }}
97
+ onblur={(event) => {
98
+ focused = false
99
+ ;(onblur as FocusEventHandler<HTMLButtonElement>)?.(event)
100
+ }}
94
101
  {disabled}
95
102
  class={[
96
103
  'np-card-container',
@@ -108,11 +115,13 @@
108
115
  aria-disabled={disabled}
109
116
  tabindex={disabled ? -1 : undefined}
110
117
  role="link"
111
- onfocusin={() => {
118
+ onfocus={(event) => {
112
119
  focused = true
120
+ ;(onfocus as FocusEventHandler<HTMLAnchorElement>)?.(event)
113
121
  }}
114
- onfocusout={() => {
122
+ onblur={(event) => {
115
123
  focused = false
124
+ ;(onblur as FocusEventHandler<HTMLAnchorElement>)?.(event)
116
125
  }}
117
126
  class={[
118
127
  'np-card-container',
@@ -0,0 +1,185 @@
1
+ <script lang="ts">
2
+ import IconButton from '../button/IconButton.svelte'
3
+ import CheckIcon from '../icons/CheckIcon.svelte'
4
+ import CloseIcon from '../icons/CloseIcon.svelte'
5
+ import Ripple from '../ripple/Ripple.svelte'
6
+ import type { FilterChipProps } from './types.ts'
7
+
8
+ let {
9
+ selected = $bindable(false),
10
+ removable = false,
11
+ elevated = false,
12
+ disabled = false,
13
+ label = '',
14
+ icon,
15
+ ...attributes
16
+ }: FilterChipProps = $props()
17
+
18
+ let chipBtn: HTMLButtonElement | undefined = $state()
19
+ </script>
20
+
21
+ <div
22
+ {...attributes}
23
+ class={[
24
+ 'np-filter-chip',
25
+ elevated ? 'np-filter-chip-elevated' : 'np-filter-chip-default',
26
+ icon || selected ? 'np-filter-chip-icon' : '',
27
+ selected ? 'np-filter-chip-selected' : '',
28
+ removable ? 'np-filter-chip-removable' : '',
29
+ disabled ? 'np-filter-chip-disabled' : '',
30
+ attributes.class,
31
+ ]}
32
+ >
33
+ <button
34
+ bind:this={chipBtn}
35
+ class="np-filter-chip-btn"
36
+ {disabled}
37
+ onclick={() => {
38
+ console.log('click')
39
+ selected = !selected
40
+ }}
41
+ >
42
+ {#if icon && !selected}
43
+ {@render icon()}
44
+ {/if}
45
+ {#if selected}
46
+ <CheckIcon width={18} height={18} />
47
+ {/if}
48
+ <div class="np-chip-label">{label}</div>
49
+ </button>
50
+ {#if !disabled}
51
+ <Ripple forElement={chipBtn} />
52
+ {/if}
53
+ {#if removable}
54
+ <IconButton
55
+ {disabled}
56
+ --np-icon-button-container-height="1.75rem"
57
+ --np-icon-button-container-width="1.75rem"
58
+ --np-icon-button-icon-size="1.125rem"
59
+ onclick={(event: Event) => {
60
+ event.stopPropagation()
61
+ }}
62
+ >
63
+ <CloseIcon />
64
+ </IconButton>
65
+ {/if}
66
+ </div>
67
+
68
+ <style>
69
+ .np-filter-chip {
70
+ position: relative;
71
+ display: inline-flex;
72
+ align-items: center;
73
+ user-select: none;
74
+ border-radius: var(--np-filter-chip-container-shape, var(--np-shape-corner-small));
75
+ --np-icon-button-icon-color: var(--np-color-on-surface-variant);
76
+ --np-icon-size: 1.125rem;
77
+ }
78
+ .np-filter-chip-btn {
79
+ box-sizing: border-box;
80
+ font-family: inherit;
81
+ background-color: transparent;
82
+ border-width: 0;
83
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
84
+ cursor: pointer;
85
+ display: inline-flex;
86
+ align-items: center;
87
+ padding: 0;
88
+ height: 2rem;
89
+ color: var(--np-color-on-surface-variant);
90
+ fill: currentColor;
91
+ gap: 0.5rem;
92
+ z-index: 1;
93
+ padding-left: 1rem;
94
+ padding-right: 1rem;
95
+ }
96
+ .np-filter-chip-icon .np-filter-chip-btn {
97
+ padding-left: 0.5rem;
98
+ }
99
+ .np-filter-chip-removable {
100
+ padding-right: 2px;
101
+ }
102
+ .np-filter-chip-removable .np-filter-chip-btn {
103
+ padding-right: 2px;
104
+ }
105
+ .np-chip-label {
106
+ line-height: 1.25rem;
107
+ font-size: 0.875rem;
108
+ font-weight: 500;
109
+ }
110
+ .np-filter-chip::before {
111
+ content: '';
112
+ position: absolute;
113
+ inset: 0;
114
+ border-radius: inherit;
115
+ pointer-events: none;
116
+ }
117
+ .np-filter-chip-default::before {
118
+ border-width: 1px;
119
+ border-style: solid;
120
+ border-color: var(--np-filter-chip-outline-color, var(--np-color-outline-variant));
121
+ }
122
+ .np-filter-chip-selected::before {
123
+ border-width: 0;
124
+ background-color: var(--np-color-secondary-container);
125
+ }
126
+ .np-filter-chip-elevated {
127
+ border-width: 0;
128
+ box-shadow: var(--np-elevation-1);
129
+ }
130
+ .np-filter-chip-selected {
131
+ --np-icon-button-icon-color: var(--np-color-on-secondary-container);
132
+ }
133
+ .np-filter-chip-selected .np-filter-chip-btn {
134
+ color: var(--np-color-on-secondary-container);
135
+ }
136
+ .np-filter-chip-btn:focus-visible {
137
+ outline-width: 0;
138
+ }
139
+ .np-filter-chip:has(.np-filter-chip-btn:focus-visible) {
140
+ outline-style: solid;
141
+ outline-color: var(--np-color-primary);
142
+ outline-width: 3px;
143
+ outline-offset: 2px;
144
+ animation: focusAnimation 0.3s ease forwards;
145
+ }
146
+ @keyframes focusAnimation {
147
+ 0% {
148
+ outline-width: 3px;
149
+ }
150
+ 50% {
151
+ outline-width: 6px;
152
+ }
153
+ 100% {
154
+ outline-width: 3px;
155
+ }
156
+ }
157
+
158
+ .np-filter-chip-disabled .np-filter-chip-btn {
159
+ cursor: default;
160
+ color: var(--np-color-on-surface);
161
+ opacity: 0.38;
162
+ }
163
+ .np-filter-chip-disabled.np-filter-chip-elevated {
164
+ box-shadow: none;
165
+ }
166
+ .np-filter-chip-disabled.np-filter-chip-selected::before {
167
+ opacity: 0.12;
168
+ }
169
+ :not(.np-filter-chip-selected).np-filter-chip-disabled.np-filter-chip-default::after {
170
+ content: '';
171
+ position: absolute;
172
+ inset: 0;
173
+ border-radius: inherit;
174
+ pointer-events: none;
175
+ border-width: 1px;
176
+ border-style: solid;
177
+ border-color: var(--np-color-on-surface);
178
+ opacity: 0.12;
179
+ }
180
+ .np-filter-chip-disabled::before {
181
+ background-color: var(--np-color-on-surface);
182
+ opacity: 0.12;
183
+ border-width: 0;
184
+ }
185
+ </style>
@@ -0,0 +1,4 @@
1
+ import type { FilterChipProps } from './types.ts';
2
+ declare const FilterChip: import("svelte").Component<FilterChipProps, {}, "selected">;
3
+ type FilterChip = ReturnType<typeof FilterChip>;
4
+ export default FilterChip;
@@ -1 +1 @@
1
- export { default as Chip } from './Chip.svelte';
1
+ export { default as FilterChip } from './FilterChip.svelte';
@@ -1 +1 @@
1
- export { default as Chip } from './Chip.svelte';
1
+ export { default as FilterChip } from './FilterChip.svelte';
@@ -1 +1,10 @@
1
- export {};
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ export interface FilterChipProps extends HTMLAttributes<HTMLDivElement> {
4
+ selected?: boolean;
5
+ removable?: boolean;
6
+ disabled?: boolean;
7
+ elevated?: boolean;
8
+ label?: string;
9
+ icon?: Snippet;
10
+ }
@@ -1 +1 @@
1
- "use strict";
1
+ export {};
@@ -1,3 +1,13 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"
1
+ <script lang="ts">
2
+ let {
3
+ height = 24,
4
+ width = 24,
5
+ }: {
6
+ height?: number
7
+ width?: number
8
+ } = $props()
9
+ </script>
10
+
11
+ <svg xmlns="http://www.w3.org/2000/svg" {height} viewBox="0 -960 960 960" {width}
2
12
  ><path d="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z" /></svg
3
13
  >
@@ -1,26 +1,7 @@
1
- export default CheckIcon;
2
- type CheckIcon = SvelteComponent<{
3
- [x: string]: never;
4
- }, {
5
- [evt: string]: CustomEvent<any>;
6
- }, {}> & {
7
- $$bindings?: string | undefined;
1
+ type $$ComponentProps = {
2
+ height?: number;
3
+ width?: number;
8
4
  };
9
- declare const CheckIcon: $$__sveltets_2_IsomorphicComponent<{
10
- [x: string]: never;
11
- }, {
12
- [evt: string]: CustomEvent<any>;
13
- }, {}, {}, string>;
14
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
15
- new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
16
- $$bindings?: Bindings;
17
- } & Exports;
18
- (internal: unknown, props: {
19
- $$events?: Events;
20
- $$slots?: Slots;
21
- }): Exports & {
22
- $set?: any;
23
- $on?: any;
24
- };
25
- z_$$bindings?: Bindings;
26
- }
5
+ declare const CheckIcon: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type CheckIcon = ReturnType<typeof CheckIcon>;
7
+ export default CheckIcon;
@@ -1,4 +1,14 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"
1
+ <script lang="ts">
2
+ let {
3
+ height = 24,
4
+ width = 24,
5
+ }: {
6
+ height?: number
7
+ width?: number
8
+ } = $props()
9
+ </script>
10
+
11
+ <svg xmlns="http://www.w3.org/2000/svg" {height} viewBox="0 -960 960 960" {width}
2
12
  ><path
3
13
  d="m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"
4
14
  /></svg
@@ -1,26 +1,7 @@
1
- export default CloseIcon;
2
- type CloseIcon = SvelteComponent<{
3
- [x: string]: never;
4
- }, {
5
- [evt: string]: CustomEvent<any>;
6
- }, {}> & {
7
- $$bindings?: string | undefined;
1
+ type $$ComponentProps = {
2
+ height?: number;
3
+ width?: number;
8
4
  };
9
- declare const CloseIcon: $$__sveltets_2_IsomorphicComponent<{
10
- [x: string]: never;
11
- }, {
12
- [evt: string]: CustomEvent<any>;
13
- }, {}, {}, string>;
14
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
15
- new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
16
- $$bindings?: Bindings;
17
- } & Exports;
18
- (internal: unknown, props: {
19
- $$events?: Events;
20
- $$slots?: Slots;
21
- }): Exports & {
22
- $set?: any;
23
- $on?: any;
24
- };
25
- z_$$bindings?: Bindings;
26
- }
5
+ declare const CloseIcon: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type CloseIcon = ReturnType<typeof CloseIcon>;
7
+ export default CloseIcon;
@@ -1,5 +1,4 @@
1
1
  <script lang="ts">
2
- import { generateUUIDv4 } from '../utils.js'
3
2
  import type { MenuProps } from './types.ts'
4
3
 
5
4
  let {
@@ -75,7 +74,7 @@
75
74
  { passive: true },
76
75
  )
77
76
  } else if (!anchor.style.getPropertyValue('anchor-name')) {
78
- const generatedId = `--${generateUUIDv4()}`
77
+ const generatedId = `--${crypto.randomUUID()}`
79
78
  element.style.setProperty('position-anchor', generatedId)
80
79
  anchor.style.setProperty('anchor-name', generatedId)
81
80
  }
@@ -1,7 +1,6 @@
1
1
  <script lang="ts">
2
2
  import Menu from '../menu/Menu.svelte'
3
3
  import { isFirstInvalidControlInForm } from '../text-field/report-validity.js'
4
- import { generateUUIDv4 } from '../utils.js'
5
4
  import type { SelectProps } from './types.ts'
6
5
  import Item from '../list/Item.svelte'
7
6
  import { tick } from 'svelte'
@@ -35,7 +34,7 @@
35
34
  let selectElement: HTMLSelectElement | undefined = $state()
36
35
  let menuElement: HTMLDivElement | undefined = $state()
37
36
  let field: HTMLDivElement | undefined = $state()
38
- let menuId = $state(`--select-${generateUUIDv4()}`)
37
+ let menuId = $state(`--select-${crypto.randomUUID()}`)
39
38
  let menuOpen = $state(false)
40
39
  let selectedLabel = $derived.by<string>(() => {
41
40
  return options.find((option) => option.value === value)?.label || ''
@@ -63,6 +63,7 @@
63
63
  rgba(0, 0, 0, 0.12) 0px 3px 14px 2px;
64
64
  --np-shape-corner-full: 9999px;
65
65
  --np-shape-corner-extra-small: 0.25rem;
66
+ --np-shape-corner-small: 0.5rem;
66
67
  --np-shape-corner-medium: 0.75rem;
67
68
  --np-shape-corner-large: 1rem;
68
69
  --np-shape-corner-extra-large: 1.75rem;
@@ -1,5 +1,4 @@
1
1
  <script lang="ts">
2
- import { generateUUIDv4 } from '../utils.js'
3
2
  import type { TooltipProps } from './types.ts'
4
3
 
5
4
  let {
@@ -46,7 +45,7 @@
46
45
  if (anchor && element) {
47
46
  if ('anchorName' in document.documentElement.style) {
48
47
  const anchorName = anchor.style.getPropertyValue('anchor-name')
49
- const generatedId = anchorName || `--${generateUUIDv4()}`
48
+ const generatedId = anchorName || `--${crypto.randomUUID()}`
50
49
  element.style.setProperty('position-anchor', generatedId)
51
50
  if (!anchorName) {
52
51
  anchor.style.setProperty('anchor-name', generatedId)
package/dist/types.d.ts CHANGED
@@ -2,6 +2,7 @@ export * from './button/types.ts';
2
2
  export * from './card/types.ts';
3
3
  export * from './checkbox/types.ts';
4
4
  export * from './chip/types.ts';
5
+ export * from './dialog/types.js';
5
6
  export * from './divider/types.js';
6
7
  export * from './list/types.ts';
7
8
  export * from './menu/types.ts';
@@ -10,6 +11,7 @@ export * from './navigation-rail/types.ts';
10
11
  export * from './progress/types.js';
11
12
  export * from './radio/types.ts';
12
13
  export * from './ripple/types.ts';
14
+ export * from './select/types.js';
13
15
  export * from './snackbar/types.ts';
14
16
  export * from './text-field/types.ts';
15
17
  export * from './tooltip/types.ts';
package/dist/types.js CHANGED
@@ -2,6 +2,7 @@ export * from './button/types.ts';
2
2
  export * from './card/types.ts';
3
3
  export * from './checkbox/types.ts';
4
4
  export * from './chip/types.ts';
5
+ export * from './dialog/types.js';
5
6
  export * from './divider/types.js';
6
7
  export * from './list/types.ts';
7
8
  export * from './menu/types.ts';
@@ -10,6 +11,7 @@ export * from './navigation-rail/types.ts';
10
11
  export * from './progress/types.js';
11
12
  export * from './radio/types.ts';
12
13
  export * from './ripple/types.ts';
14
+ export * from './select/types.js';
13
15
  export * from './snackbar/types.ts';
14
16
  export * from './text-field/types.ts';
15
17
  export * from './tooltip/types.ts';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "noph-ui",
3
- "version": "0.10.12",
3
+ "version": "0.11.0",
4
4
  "license": "MIT",
5
5
  "homepage": "https://noph.dev",
6
6
  "repository": {
@@ -66,7 +66,7 @@
66
66
  "prettier": "^3.4.2",
67
67
  "prettier-plugin-svelte": "^3.3.3",
68
68
  "publint": "^0.3.2",
69
- "svelte": "^5.19.3",
69
+ "svelte": "^5.19.4",
70
70
  "svelte-check": "^4.1.4",
71
71
  "typescript": "^5.7.3",
72
72
  "typescript-eslint": "^8.22.0",
@@ -1,14 +0,0 @@
1
- <script lang="ts">
2
- let { ...attributes } = $props()
3
- </script>
4
-
5
- <template class="divider {attributes.class}"></template>
6
-
7
- <style>
8
- .divider {
9
- height: 1px;
10
- width: 100%;
11
- display: flex;
12
- background-color: var(--np-color-outline-variant);
13
- }
14
- </style>
@@ -1,3 +0,0 @@
1
- declare const Chip: import("svelte").Component<Record<string, any>, {}, "">;
2
- type Chip = ReturnType<typeof Chip>;
3
- export default Chip;
package/dist/utils.d.ts DELETED
@@ -1,2 +0,0 @@
1
- declare const generateUUIDv4: () => string;
2
- export { generateUUIDv4 };
package/dist/utils.js DELETED
@@ -1,7 +0,0 @@
1
- const generateUUIDv4 = () => {
2
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
3
- const r = (Math.random() * 16) | 0, v = c === 'x' ? r : (r & 0x3) | 0x8;
4
- return v.toString(16);
5
- });
6
- };
7
- export { generateUUIDv4 };