@witchcraft/ui 0.2.1-beta.2 → 0.2.1

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 (173) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/module.mjs +4 -5
  3. package/dist/runtime/build/WitchcraftUiResolver.d.ts +2 -2
  4. package/dist/runtime/build/generateTheme.js +2 -2
  5. package/dist/runtime/components/Aria/Aria.vue +4 -2
  6. package/dist/runtime/components/Aria/Aria.vue.d.ts +1 -1
  7. package/dist/runtime/components/Icon/Icon.vue +3 -3
  8. package/dist/runtime/components/Icon/Icon.vue.d.ts +1 -1
  9. package/dist/runtime/components/LibButton/LibButton.vue +9 -4
  10. package/dist/runtime/components/LibButton/LibButton.vue.d.ts +1 -1
  11. package/dist/runtime/components/LibCheckbox/LibCheckbox.vue +3 -4
  12. package/dist/runtime/components/LibCheckbox/LibCheckbox.vue.d.ts +1 -1
  13. package/dist/runtime/components/LibColorInput/LibColorInput.vue +15 -8
  14. package/dist/runtime/components/LibColorInput/LibColorInput.vue.d.ts +1 -1
  15. package/dist/runtime/components/LibColorPicker/LibColorPicker.vue +10 -6
  16. package/dist/runtime/components/LibColorPicker/LibColorPicker.vue.d.ts +1 -1
  17. package/dist/runtime/components/LibColorPicker/utils/truncate.js +1 -1
  18. package/dist/runtime/components/LibDarkModeSwitcher/LibDarkModeSwitcher.vue +5 -2
  19. package/dist/runtime/components/LibDarkModeSwitcher/LibDarkModeSwitcher.vue.d.ts +1 -1
  20. package/dist/runtime/components/LibDatePicker/LibDatePicker.vue.d.ts +1 -1
  21. package/dist/runtime/components/LibDatePicker/LibRangeDatePicker.vue +8 -6
  22. package/dist/runtime/components/LibDatePicker/LibRangeDatePicker.vue.d.ts +1 -1
  23. package/dist/runtime/components/LibDatePicker/LibSingleDatePicker.vue +7 -5
  24. package/dist/runtime/components/LibDatePicker/LibSingleDatePicker.vue.d.ts +1 -1
  25. package/dist/runtime/components/LibDatePicker/LibTimeZonePicker.vue.d.ts +1 -1
  26. package/dist/runtime/components/LibDebug/LibDebug.vue +9 -4
  27. package/dist/runtime/components/LibDebug/LibDebug.vue.d.ts +1 -1
  28. package/dist/runtime/components/LibDevOnly/LibDevOnly.vue +2 -1
  29. package/dist/runtime/components/LibDevOnly/LibDevOnly.vue.d.ts +4 -1
  30. package/dist/runtime/components/LibFileInput/LibFileInput.vue +29 -13
  31. package/dist/runtime/components/LibFileInput/LibFileInput.vue.d.ts +2 -2
  32. package/dist/runtime/components/LibInputDeprecated/LibInputDeprecated.vue +42 -12
  33. package/dist/runtime/components/LibLabel/LibLabel.vue +2 -2
  34. package/dist/runtime/components/LibLabel/LibLabel.vue.d.ts +3 -3
  35. package/dist/runtime/components/LibMultiValues/LibMultiValues.vue +1 -2
  36. package/dist/runtime/components/LibMultiValues/LibMultiValues.vue.d.ts +2 -2
  37. package/dist/runtime/components/LibNotifications/LibNotification.vue +19 -8
  38. package/dist/runtime/components/LibNotifications/LibNotifications.vue +10 -6
  39. package/dist/runtime/components/LibNotifications/LibNotifications.vue.d.ts +2 -2
  40. package/dist/runtime/components/LibPagination/LibPagination.vue +25 -12
  41. package/dist/runtime/components/LibPagination/LibPagination.vue.d.ts +2 -2
  42. package/dist/runtime/components/LibPalette/LibPalette.vue +6 -5
  43. package/dist/runtime/components/LibPalette/LibPalette.vue.d.ts +5 -5
  44. package/dist/runtime/components/LibPopup/LibPopup.vue +6 -4
  45. package/dist/runtime/components/LibPopup/LibPopup.vue.d.ts +3 -3
  46. package/dist/runtime/components/LibProgressBar/LibProgressBar.vue +5 -3
  47. package/dist/runtime/components/LibProgressBar/LibProgressBar.vue.d.ts +9 -9
  48. package/dist/runtime/components/LibRecorder/LibRecorder.vue +1 -1
  49. package/dist/runtime/components/LibRecorder/LibRecorder.vue.d.ts +2 -2
  50. package/dist/runtime/components/LibRoot/LibRoot.vue +11 -6
  51. package/dist/runtime/components/LibRoot/LibRoot.vue.d.ts +1 -1
  52. package/dist/runtime/components/LibSimpleInput/LibSimpleInput.vue +1 -1
  53. package/dist/runtime/components/LibSimpleInput/LibSimpleInput.vue.d.ts +1 -1
  54. package/dist/runtime/components/LibSuggestions/LibSuggestions.vue +5 -3
  55. package/dist/runtime/components/LibSuggestions/LibSuggestions.vue.d.ts +1 -1
  56. package/dist/runtime/components/LibTable/LibTable.vue +23 -8
  57. package/dist/runtime/components/LibTable/LibTable.vue.d.ts +1 -1
  58. package/dist/runtime/components/Template/NAME.vue +2 -3
  59. package/dist/runtime/components/Template/NAME.vue.d.ts +1 -1
  60. package/dist/runtime/components/TestControls/TestControls.vue +4 -2
  61. package/dist/runtime/components/TestControls/TestControls.vue.d.ts +1 -1
  62. package/dist/runtime/composables/useDragWithThreshold.d.ts +1 -1
  63. package/dist/runtime/composables/useInjectedI18n.d.ts +1 -1
  64. package/dist/runtime/composables/useScrollNearContainerEdges.d.ts +1 -1
  65. package/dist/runtime/composables/useSetupI18n.d.ts +1 -1
  66. package/dist/runtime/composables/useSuggestions.d.ts +2 -2
  67. package/dist/runtime/helpers/NotificationHandler.d.ts +1 -1
  68. package/dist/runtime/helpers/base64ToImg.js +2 -2
  69. package/dist/runtime/tailwind/themeConvertionOpts.d.ts +1 -1
  70. package/dist/runtime/types/index.d.ts +1 -1
  71. package/dist/runtime/utils/notifyIfError.d.ts +1 -1
  72. package/package.json +4 -6
  73. package/src/module.ts +28 -32
  74. package/src/runtime/build/WitchcraftUiResolver.ts +3 -3
  75. package/src/runtime/build/generateTheme.ts +3 -2
  76. package/src/runtime/build/unpluginIconViteOptions.ts +1 -1
  77. package/src/runtime/components/Aria/Aria.vue +5 -6
  78. package/src/runtime/components/Focus.stories.ts +11 -12
  79. package/src/runtime/components/Icon/Icon.vue +5 -9
  80. package/src/runtime/components/LibButton/LibButton.stories.ts +21 -22
  81. package/src/runtime/components/LibButton/LibButton.vue +23 -21
  82. package/src/runtime/components/LibCheckbox/LibCheckbox.stories.ts +6 -10
  83. package/src/runtime/components/LibCheckbox/LibCheckbox.vue +17 -19
  84. package/src/runtime/components/LibColorInput/LibColorInput.stories.ts +8 -13
  85. package/src/runtime/components/LibColorInput/LibColorInput.vue +49 -45
  86. package/src/runtime/components/LibColorPicker/LibColorPicker.stories.ts +14 -18
  87. package/src/runtime/components/LibColorPicker/LibColorPicker.vue +50 -52
  88. package/src/runtime/components/LibColorPicker/utils/safeConvertToHsva.ts +1 -2
  89. package/src/runtime/components/LibColorPicker/utils/safeConvertToRgba.ts +1 -2
  90. package/src/runtime/components/LibColorPicker/utils/truncate.ts +1 -2
  91. package/src/runtime/components/LibDarkModeSwitcher/LibDarkModeSwitcher.stories.ts +5 -8
  92. package/src/runtime/components/LibDarkModeSwitcher/LibDarkModeSwitcher.vue +11 -9
  93. package/src/runtime/components/LibDatePicker/LibDatePicker.stories.ts +14 -15
  94. package/src/runtime/components/LibDatePicker/LibDatePicker.vue +1 -2
  95. package/src/runtime/components/LibDatePicker/LibRangeDatePicker.vue +13 -13
  96. package/src/runtime/components/LibDatePicker/LibSingleDatePicker.vue +9 -8
  97. package/src/runtime/components/LibDatePicker/LibTimeZonePicker.vue +2 -1
  98. package/src/runtime/components/LibDatePicker/helpers.ts +0 -2
  99. package/src/runtime/components/LibDebug/LibDebug.stories.ts +11 -15
  100. package/src/runtime/components/LibDebug/LibDebug.vue +14 -11
  101. package/src/runtime/components/LibDevOnly/LibDevOnly.vue +8 -4
  102. package/src/runtime/components/LibFileInput/LibFileInput.stories.ts +12 -15
  103. package/src/runtime/components/LibFileInput/LibFileInput.vue +65 -47
  104. package/src/runtime/components/LibInputDeprecated/LibInputDeprecated.stories.ts +59 -67
  105. package/src/runtime/components/LibInputDeprecated/LibInputDeprecated.vue +73 -48
  106. package/src/runtime/components/LibLabel/LibLabel.stories.ts +4 -8
  107. package/src/runtime/components/LibLabel/LibLabel.vue +8 -8
  108. package/src/runtime/components/LibMultiValues/LibMultiValues.stories.ts +10 -15
  109. package/src/runtime/components/LibMultiValues/LibMultiValues.vue +14 -18
  110. package/src/runtime/components/LibNotifications/LibNotification.stories.ts +30 -34
  111. package/src/runtime/components/LibNotifications/LibNotification.vue +27 -17
  112. package/src/runtime/components/LibNotifications/LibNotifications.stories.ts +11 -15
  113. package/src/runtime/components/LibNotifications/LibNotifications.vue +21 -16
  114. package/src/runtime/components/LibPagination/LibPagination.stories.ts +5 -9
  115. package/src/runtime/components/LibPagination/LibPagination.vue +46 -32
  116. package/src/runtime/components/LibPalette/LibPalette.stories.ts +3 -7
  117. package/src/runtime/components/LibPalette/LibPalette.vue +13 -12
  118. package/src/runtime/components/LibPopup/LibPopup.stories.ts +19 -23
  119. package/src/runtime/components/LibPopup/LibPopup.vue +31 -35
  120. package/src/runtime/components/LibProgressBar/LibProgressBar.stories.ts +13 -17
  121. package/src/runtime/components/LibProgressBar/LibProgressBar.vue +36 -33
  122. package/src/runtime/components/LibRecorder/LibRecorder.stories.ts +11 -12
  123. package/src/runtime/components/LibRecorder/LibRecorder.vue +34 -34
  124. package/src/runtime/components/LibRoot/LibRoot.vue +16 -12
  125. package/src/runtime/components/LibSimpleInput/LibSimpleInput.stories.ts +20 -24
  126. package/src/runtime/components/LibSimpleInput/LibSimpleInput.vue +17 -21
  127. package/src/runtime/components/LibSuggestions/LibSuggestions.stories.ts +16 -19
  128. package/src/runtime/components/LibSuggestions/LibSuggestions.vue +27 -30
  129. package/src/runtime/components/LibTable/LibTable.stories.ts +30 -33
  130. package/src/runtime/components/LibTable/LibTable.vue +38 -24
  131. package/src/runtime/components/Reset.stories.ts +3 -6
  132. package/src/runtime/components/Scrolling.stories.ts +5 -8
  133. package/src/runtime/components/Template/NAME.vue +11 -11
  134. package/src/runtime/components/Template/TemplateStory.ts +9 -10
  135. package/src/runtime/components/TestControls/TestControls.vue +5 -5
  136. package/src/runtime/components/shared/props.ts +4 -6
  137. package/src/runtime/components/shared/storyHelpers/playInput.ts +2 -3
  138. package/src/runtime/components/shared/storyHelpers/playSuggestions.ts +5 -9
  139. package/src/runtime/composables/useAccesibilityOutline.ts +1 -1
  140. package/src/runtime/composables/useAriaLabel.ts +1 -1
  141. package/src/runtime/composables/useDarkMode.ts +15 -19
  142. package/src/runtime/composables/useDragWithThreshold.ts +6 -8
  143. package/src/runtime/composables/useGlobalResizeObserver.ts +0 -1
  144. package/src/runtime/composables/useInjectedDarkMode.ts +2 -2
  145. package/src/runtime/composables/useInjectedI18n.ts +1 -1
  146. package/src/runtime/composables/useInjectedLocale.ts +3 -4
  147. package/src/runtime/composables/useScrollNearContainerEdges.stories.ts +4 -4
  148. package/src/runtime/composables/useScrollNearContainerEdges.ts +12 -13
  149. package/src/runtime/composables/useSetupI18n.ts +4 -7
  150. package/src/runtime/composables/useSetupLocale.ts +3 -5
  151. package/src/runtime/composables/useSuggestions.ts +25 -30
  152. package/src/runtime/directives/vDetectFlex.ts +5 -8
  153. package/src/runtime/directives/vExtractRootEl.ts +1 -1
  154. package/src/runtime/directives/vResizableCols.ts +3 -7
  155. package/src/runtime/directives/vResizeObserver.ts +1 -2
  156. package/src/runtime/globalResizeObserver.ts +0 -1
  157. package/src/runtime/helpers/NotificationHandler.ts +8 -12
  158. package/src/runtime/helpers/base64ToImg.ts +2 -3
  159. package/src/runtime/helpers/createNoonUtcDate.ts +0 -1
  160. package/src/runtime/helpers/defaultTranslationFunction.ts +0 -1
  161. package/src/runtime/helpers/getTimeZoneList.ts +0 -1
  162. package/src/runtime/helpers/readFile.ts +2 -2
  163. package/src/runtime/helpers/resizeObserverWrapper.ts +0 -1
  164. package/src/runtime/helpers/storybook.ts +2 -3
  165. package/src/runtime/main.lib.ts +0 -2
  166. package/src/runtime/nuxt/plugins/vue-plugin.ts +4 -5
  167. package/src/runtime/tailwind/themeConvertionOpts.ts +3 -4
  168. package/src/runtime/theme.ts +0 -1
  169. package/src/runtime/types/index.ts +3 -4
  170. package/src/runtime/utils/notifyIfError.ts +2 -2
  171. package/src/runtime/utils/twMerge.ts +2 -2
  172. package/src/runtime/vue/VueComponentsPlugin.ts +1 -2
  173. package/src/runtime/vue/registerComponents.ts +0 -1
@@ -1,5 +1,6 @@
1
1
  <template>
2
- <div :class="twMerge(`notification
2
+ <div
3
+ :class="twMerge(`notification
3
4
  max-w-700px
4
5
  bg-neutral-50
5
6
  dark:bg-neutral-900
@@ -13,14 +14,15 @@
13
14
  gap-2
14
15
  p-2 m-2
15
16
  `,
16
- ($attrs as any).class)"
17
+ ($attrs as any).class)"
17
18
  v-bind="{ ...$attrs, class: undefined }"
18
19
  tabindex="0"
19
20
  ref="notificationEl"
20
21
  @keydown.enter.self="NotificationHandler.resolveToDefault(notification)"
21
22
  >
22
23
  <div class="notification--header flex-reverse flex justify-between">
23
- <div v-if="notification.title"
24
+ <div
25
+ v-if="notification.title"
24
26
  tabindex="0"
25
27
  class="title
26
28
  focus-outline flex
@@ -32,7 +34,8 @@
32
34
  </div>
33
35
  <div class="notification--spacer flex-1"/>
34
36
  <div class="actions flex">
35
- <LibButton :border="false"
37
+ <LibButton
38
+ :border="false"
36
39
  class="notification--copy-button text-neutral-700"
37
40
  @click="copy(handler ? handler.stringify(notification) : JSON.stringify(notification))"
38
41
  >
@@ -48,21 +51,29 @@
48
51
  </lib-button>
49
52
  </div>
50
53
  </div>
51
- <div class="notification--message whitespace-pre-wrap" tabindex="0">
54
+ <div
55
+ class="notification--message whitespace-pre-wrap"
56
+ tabindex="0"
57
+ >
52
58
  {{ notification.message }}
53
59
  </div>
54
60
  <div class="notification--footer flex items-end justify-between">
55
- <div v-if="notification.code" class="code text-xs text-neutral-700 dark:text-neutral-300">
61
+ <div
62
+ v-if="notification.code"
63
+ class="code text-xs text-neutral-700 dark:text-neutral-300"
64
+ >
56
65
  Code: {{ notification.code }}
57
66
  </div>
58
67
  <div class="notification--footer-spacer flex-1 py-1"/>
59
- <div v-if="notification.options"
68
+ <div
69
+ v-if="notification.options"
60
70
  class="notification--options
61
71
  flex flex-wrap justify-end
62
72
  gap-2
63
73
  "
64
74
  >
65
- <lib-button :label="option"
75
+ <lib-button
76
+ :label="option"
66
77
  :class="twMerge(`
67
78
  notification--option-button
68
79
  `,
@@ -78,8 +89,9 @@
78
89
  </div>
79
90
  </div>
80
91
  </template>
92
+
81
93
  <script setup lang="ts">
82
- import { computed, type HTMLAttributes,ref, useAttrs } from "vue"
94
+ import { computed, type HTMLAttributes, ref, useAttrs } from "vue"
83
95
 
84
96
  import IFa6RegularCopy from "~icons/fa6-regular/copy"
85
97
  import IFa6SolidXmark from "~icons/fa6-solid/xmark"
@@ -91,30 +103,28 @@ import Icon from "../Icon/Icon.vue"
91
103
  import LibButton from "../LibButton/LibButton.vue"
92
104
  import type { TailwindClassProp } from "../shared/props.js"
93
105
 
94
-
95
106
  defineOptions({
96
- name: "lib-notification",
97
- inheritAttrs: false,
107
+ name: "LibNotification",
108
+ inheritAttrs: false
98
109
  })
99
110
  const $attrs = useAttrs()
100
111
 
101
112
  const props = withDefaults(defineProps<Props>(), {
102
- handler: undefined,
113
+ handler: undefined
103
114
  })
104
115
 
105
116
  const getColor = (notification: NotificationEntry, option: string): "ok" | "primary" | "danger" | "secondary" => notification.default === option ? "primary" : notification.dangerous.includes(option) ? "danger" : "secondary"
106
117
 
107
118
  /* Todo make this more flexible? */
108
- // eslint-disable-next-line @stylistic/space-in-parens
119
+
109
120
  const buttonColors = computed(() => props.notification.options.map((option: any /* what ??? */) => getColor(props.notification, option)))
110
121
 
111
122
  const notificationEl = ref<null | HTMLElement>(null)
112
123
  defineExpose({
113
124
  focus: () => {
114
125
  notificationEl.value?.focus()
115
- },
126
+ }
116
127
  })
117
-
118
128
  </script>
119
129
 
120
130
  <script lang="ts">
@@ -126,7 +136,7 @@ type RealProps = {
126
136
  interface Props
127
137
  extends
128
138
  /** @vue-ignore */
129
- Partial<Omit<HTMLAttributes,"class"> & TailwindClassProp>,
139
+ Partial<Omit<HTMLAttributes, "class"> & TailwindClassProp>,
130
140
  RealProps
131
141
  {}
132
142
  </script>
@@ -5,23 +5,20 @@ import { reactive, ref } from "vue"
5
5
  import LibNotifications from "./LibNotifications.vue"
6
6
 
7
7
  import { NotificationHandler } from "../../helpers/NotificationHandler.js"
8
- // eslint-disable-next-line @typescript-eslint/no-restricted-imports
9
8
  import * as components from "../index.js"
10
9
 
11
-
12
10
  const meta: Meta<typeof LibNotifications> = {
13
11
  component: LibNotifications,
14
12
  title: "Components/Notifications",
15
13
  args: {
16
14
  // @ts-expect-error story only arg
17
- withTitle: true,
18
- },
15
+ withTitle: true
16
+ }
19
17
  }
20
18
 
21
19
  export default meta
22
20
  type Story = StoryObj<typeof LibNotifications>
23
21
 
24
-
25
22
  export const Primary: Story = {
26
23
  render: args => ({
27
24
  components,
@@ -40,7 +37,7 @@ export const Primary: Story = {
40
37
  message: `This is a notification that requires action. Pick an option:`,
41
38
  requiresAction: true,
42
39
  options: ["Ok", "Default Answer", "Cancel"],
43
- default: "Default Answer",
40
+ default: "Default Answer"
44
41
  })
45
42
  }
46
43
  const notifyWithDangerousOption = () => {
@@ -50,7 +47,7 @@ export const Primary: Story = {
50
47
  message: `This is a notification that has a dangerous option. Pick an option:`,
51
48
  options: ["Ok", "Default Answer", "Dangerous Option", "Cancel"],
52
49
  default: "Default Answer",
53
- dangerous: ["Dangerous Option"],
50
+ dangerous: ["Dangerous Option"]
54
51
  })
55
52
  }
56
53
  const notifyNonCancellable = () => {
@@ -60,7 +57,7 @@ export const Primary: Story = {
60
57
  message: `This is a non-cancellable notification. Pick an option:`,
61
58
  options: ["Ok", "Default Answer"],
62
59
  default: "Default Answer",
63
- cancellable: false,
60
+ cancellable: false
64
61
  })
65
62
  }
66
63
  const notifyNonCancellableRequiresAction = () => {
@@ -71,7 +68,7 @@ export const Primary: Story = {
71
68
  requiresAction: true,
72
69
  options: ["Ok", "Default Answer"],
73
70
  default: "Default Answer",
74
- cancellable: false,
71
+ cancellable: false
75
72
  })
76
73
  }
77
74
  const notifyTimeoutable = () => {
@@ -79,7 +76,7 @@ export const Primary: Story = {
79
76
  void handler.notify({
80
77
  title: withTitle.value ? `Notification(${count})` : undefined,
81
78
  message: `This is a notification. No action required.`,
82
- timeout: disableTimeout.value ? false : 2000,
79
+ timeout: disableTimeout.value ? false : 2000
83
80
  })
84
81
  }
85
82
  return {
@@ -93,8 +90,8 @@ export const Primary: Story = {
93
90
  disableTimeout,
94
91
  args: {
95
92
  outline: false,
96
- ...args,
97
- },
93
+ ...args
94
+ }
98
95
  }
99
96
  },
100
97
  backgrounds: { disable: true },
@@ -118,7 +115,6 @@ export const Primary: Story = {
118
115
  </template>
119
116
  </lib-debug>
120
117
  </lib-root>
121
- `,
122
- }),
118
+ `
119
+ })
123
120
  }
124
-
@@ -1,5 +1,6 @@
1
1
  <template>
2
- <TransitionGroup name="list"
2
+ <TransitionGroup
3
+ name="list"
3
4
  tag="div"
4
5
  :class="twMerge(`notifications
5
6
  absolute
@@ -13,7 +14,8 @@
13
14
  `, ($attrs as any).class)"
14
15
  v-bind="{ ...$attrs, class: undefined }"
15
16
  >
16
- <lib-notification class="pointer-events-auto"
17
+ <lib-notification
18
+ class="pointer-events-auto"
17
19
  :handler="handler"
18
20
  tabindex="0"
19
21
  :notification="notification"
@@ -28,7 +30,8 @@
28
30
  />
29
31
  </Transition>
30
32
  <Transition>
31
- <dialog v-show="topNotifications.length > 0"
33
+ <dialog
34
+ v-show="topNotifications.length > 0"
32
35
  :id="id"
33
36
  :class="twMerge(`notifications-modal
34
37
  bg-transparent
@@ -40,7 +43,8 @@
40
43
  @click.self.prevent="topNotifications[0] && NotificationHandler.dismiss(topNotifications[0])"
41
44
  >
42
45
  <form>
43
- <lib-notification v-if="topNotifications.length > 0 && topNotifications[0]"
46
+ <lib-notification
47
+ v-if="topNotifications.length > 0 && topNotifications[0]"
44
48
  :handler="handler"
45
49
  class="top-notification"
46
50
  :notification="topNotifications[0]"
@@ -50,9 +54,10 @@
50
54
  </dialog>
51
55
  </Transition>
52
56
  </template>
57
+
53
58
  <script setup lang="ts">
54
59
  import { removeIfIn } from "@alanscodelog/utils/removeIfIn"
55
- import { type HTMLAttributes,nextTick, onBeforeUnmount, ref,shallowReactive, Transition, TransitionGroup } from "vue"
60
+ import { nextTick, onBeforeUnmount, ref, shallowReactive } from "vue"
56
61
 
57
62
  import LibNotification from "./LibNotification.vue"
58
63
 
@@ -62,11 +67,10 @@ import { twMerge } from "../../utils/twMerge.js"
62
67
  import type { LinkableByIdProps, TailwindClassProp } from "../shared/props.js"
63
68
 
64
69
  defineOptions({
65
- name: "lib-notifications",
66
- inheritAttrs: false,
70
+ name: "LibNotifications",
71
+ inheritAttrs: false
67
72
  })
68
73
 
69
-
70
74
  const props = defineProps<Props>()
71
75
 
72
76
  const dialogEl = ref<HTMLDialogElement | null>(null)
@@ -121,21 +125,22 @@ for (const entry of handler.queue) { addNotification(entry) }
121
125
  onBeforeUnmount(() => {
122
126
  handler.removeNotificationListener(notificationListener)
123
127
  })
124
-
125
128
  </script>
129
+
126
130
  <script lang="ts">
131
+ import type { HTMLAttributes } from "vue"
127
132
 
128
- type RealProps =
129
- & LinkableByIdProps
130
- & {
131
- /** If not provided, uses the global handler (this requires useNotificationHandler be called and configured). */
132
- handler?: NotificationHandler
133
- }
133
+ type RealProps
134
+ = & LinkableByIdProps
135
+ & {
136
+ /** If not provided, uses the global handler (this requires useNotificationHandler be called and configured). */
137
+ handler?: NotificationHandler
138
+ }
134
139
 
135
140
  interface Props
136
141
  extends
137
142
  /** @vue-ignore */
138
- Partial<Omit<HTMLAttributes,"class"> & TailwindClassProp>,
143
+ Partial<Omit<HTMLAttributes, "class"> & TailwindClassProp>,
139
144
  RealProps
140
145
  {}
141
146
  </script>
@@ -4,22 +4,19 @@ import { ref } from "vue"
4
4
 
5
5
  import LibPagination from "./LibPagination.vue"
6
6
 
7
- // eslint-disable-next-line @typescript-eslint/no-restricted-imports
8
7
  import * as components from "../index.js"
9
8
 
10
-
11
9
  const meta: Meta<typeof LibPagination> = {
12
10
  component: LibPagination,
13
11
  title: "Components/Pagination",
14
12
  args: {
15
- total: 10,
16
- },
13
+ total: 10
14
+ }
17
15
  }
18
16
 
19
17
  export default meta
20
18
  type Story = StoryObj<typeof LibPagination>
21
19
 
22
-
23
20
  export const Primary: Story = {
24
21
  render: args => ({
25
22
  components,
@@ -35,7 +32,7 @@ export const Primary: Story = {
35
32
  return {
36
33
  changePage,
37
34
  args,
38
- num,
35
+ num
39
36
  }
40
37
  },
41
38
  template: `
@@ -47,7 +44,6 @@ export const Primary: Story = {
47
44
  <lib-simple-input :label="'Change Page'" :modelValue="num.toString()" @update:modelValue="num = parseInt($event)" type="number" min="0" :max="args.total">
48
45
 
49
46
  </lib-simple-input>
50
- `,
51
- }),
47
+ `
48
+ })
52
49
  }
53
-
@@ -7,70 +7,78 @@
7
7
  role="navigation"
8
8
  :aria-label="t('pagination.aria')"
9
9
  >
10
- <slot v-if="prevLink.i > 0 && prevLink.i !== currentLink.i"
10
+ <slot
11
+ v-if="prevLink.i > 0 && prevLink.i !== currentLink.i"
11
12
  name="link"
12
13
  :i="prevLink.i"
13
14
  :href="prevLink.href"
14
15
  :text="t('pagination.previous-page')"
15
- :aria-label=" t('pagination.aria.go-to-previous-page',{count:prevLink.i})"
16
+ :aria-label=" t('pagination.aria.go-to-previous-page', { count: prevLink.i })"
16
17
  :class="`pagination--link ${pageClasses}`"
17
18
  >
18
19
  <a
19
20
  :class="`pagination--link ${pageClasses}`"
20
21
  :href="prevLink.href"
21
- :aria-label=" t('pagination.aria.go-to-previous-page', {count:prevLink.i})"
22
+ :aria-label=" t('pagination.aria.go-to-previous-page', { count: prevLink.i })"
22
23
  />
23
24
  </slot>
24
25
  <div class="pagination--spacer flex-1"/>
25
- <slot v-if="firstLink.i !== currentLink.i"
26
+ <slot
27
+ v-if="firstLink.i !== currentLink.i"
26
28
  name="link"
27
29
  :i="0"
28
30
  :href="firstLink.href"
29
31
  :text="firstLink.i"
30
- :aria-label="t('pagination.aria.go-to-page', {count:firstLink.i})"
32
+ :aria-label="t('pagination.aria.go-to-page', { count: firstLink.i })"
31
33
  :class="`pagination--link pagination--first-link ${pageClasses}`"
32
34
  >
33
35
  {{ firstLink.href }}
34
36
  <a
35
37
  :class="`pagination--link pagination--first-link ${pageClasses}`"
36
38
  :href="firstLink.href"
37
- :aria-label="t('pagination.aria.go-to-page', {count:firstLink.i})"
39
+ :aria-label="t('pagination.aria.go-to-page', { count: firstLink.i })"
38
40
  >
39
41
  {{ firstLink.i }}
40
42
  </a>
41
43
  </slot>
42
- <div v-if="prevLink.i - extraPages > firstLink.i" class="pagination--page-fill">
44
+ <div
45
+ v-if="prevLink.i - extraPages > firstLink.i"
46
+ class="pagination--page-fill"
47
+ >
43
48
  ...
44
49
  </div>
45
50
  <template
46
51
  v-for="entry in extraPagesPrev"
47
52
  :key="entry.i"
48
53
  >
49
- <slot name="link"
54
+ <slot
55
+ name="link"
50
56
  :class="`pagination--link ${pageClasses}`"
51
57
  :i="entry.i"
52
58
  :href="entry.href"
53
- :aria-label="t('pagination.aria.go-to-page', {count:entry.i})"
59
+ :aria-label="t('pagination.aria.go-to-page', { count: entry.i })"
54
60
  >
55
61
  <a
56
62
  :class="`pagination--link ${pageClasses}`"
57
63
  :href="entry.href"
58
- :aria-label="t('pagination.aria.go-to-page', {count:entry.i})"
64
+ :aria-label="t('pagination.aria.go-to-page', { count: entry.i })"
59
65
  >
60
66
  {{ entry.i }}
61
67
  </a>
62
68
  </slot>
63
69
  </template>
64
- <slot name="current"
70
+ <slot
71
+ name="current"
65
72
  :class="`pagination--link ${currentPageClasses}`"
66
73
  tabindex="0"
67
74
  :i="currentLink.i"
68
- :aria-label="t('pagination.aria.current-page', {count:currentLink.i})"
75
+ :aria-label="t('pagination.aria.current-page', { count: currentLink.i })"
69
76
  :aria_current="true"
70
77
  >
71
- <div :class="`pagination--current-page a ${currentPageClasses}`"
78
+ <div
79
+ :class="`pagination--current-page a ${currentPageClasses}`"
72
80
  tabindex="0"
73
- :aria-label="t('pagination.aria.current-page', {count:currentLink.i})"
81
+ :aria-label="t('pagination.aria.current-page', { count: currentLink.i })"
74
82
  aria-current="true"
75
83
  @click="$event.preventDefault()"
76
84
  >
@@ -81,36 +89,42 @@
81
89
  v-for="entry in extraPagesNext"
82
90
  :key="entry.i"
83
91
  >
84
- <slot name="link"
92
+ <slot
93
+ name="link"
85
94
  :class="`pagination--link ${pageClasses}`"
86
95
  :i="entry.i"
87
96
  :href="entry.href"
88
- :aria-label="t('pagination.aria.go-to-page', {count:entry.i})"
97
+ :aria-label="t('pagination.aria.go-to-page', { count: entry.i })"
89
98
  >
90
99
  <a
91
100
  :class="`pagination--link ${pageClasses}`"
92
101
  :href="entry.href"
93
- :aria-label="t('pagination.aria.go-to-page', {count:entry.i})"
102
+ :aria-label="t('pagination.aria.go-to-page', { count: entry.i })"
94
103
  >
95
104
  {{ entry.i }}
96
105
  </a>
97
106
  </slot>
98
107
  </template>
99
- <div v-if="nextLink.i + extraPages < total" class="pagination--page-fill" aria-hidden="true">
108
+ <div
109
+ v-if="nextLink.i + extraPages < total"
110
+ class="pagination--page-fill"
111
+ aria-hidden="true"
112
+ >
100
113
  ...
101
114
  </div>
102
- <slot v-if="lastLink.i !== currentLink.i"
115
+ <slot
116
+ v-if="lastLink.i !== currentLink.i"
103
117
  name="link"
104
118
  :class="`pagination--link ${pageClasses}`"
105
119
  :i="lastLink.i"
106
120
  :href="lastLink.href"
107
121
  :text="total"
108
- :aria-label="t('pagination.aria.go-to-page', {count:lastLink.i})"
122
+ :aria-label="t('pagination.aria.go-to-page', { count: lastLink.i })"
109
123
  >
110
124
  <a
111
125
  :class="`pagination--link ${pageClasses}`"
112
126
  :href="lastLink.href"
113
- :aria-label="t('pagination.aria.go-to-page', {count:lastLink.i})"
127
+ :aria-label="t('pagination.aria.go-to-page', { count: lastLink.i })"
114
128
  >
115
129
  {{ total }}
116
130
  </a>
@@ -123,24 +137,25 @@
123
137
  :i="nextLink.i"
124
138
  :href="nextLink.href"
125
139
  :text="t('pagination.next-page')"
126
- :aria-label="t('pagination.aria.go-to-next-page', {count:nextLink.i})"
140
+ :aria-label="t('pagination.aria.go-to-next-page', { count: nextLink.i })"
127
141
  >
128
142
  <a
129
143
  :class="`pagination--link ${pageClasses}`"
130
144
  :href="nextLink.href"
131
- :aria-label="t('pagination.aria.go-to-next-page', {count:nextLink.i})"
145
+ :aria-label="t('pagination.aria.go-to-next-page', { count: nextLink.i })"
132
146
  >
133
147
  Next
134
148
  </a>
135
149
  </slot>
136
150
  </nav>
137
151
  </template>
152
+
138
153
  <script setup lang="ts">
139
- import { computed, type HTMLAttributes,useAttrs,watch } from "vue"
154
+ import { computed, type HTMLAttributes, useAttrs, watch } from "vue"
140
155
 
141
156
  import { useInjectedI18n } from "../../composables/useInjectedI18n.js"
142
157
  import { twMerge } from "../../utils/twMerge.js"
143
- import { type TailwindClassProp } from "../shared/props.js"
158
+ import type { TailwindClassProp } from "../shared/props.js"
144
159
 
145
160
  const t = useInjectedI18n()
146
161
 
@@ -166,8 +181,8 @@ const currentPageClasses = `
166
181
  scale-125
167
182
  `
168
183
  defineOptions({
169
- name: "lib-pagination",
170
- inheritAttrs: false,
184
+ name: "LibPagination",
185
+ inheritAttrs: false
171
186
  })
172
187
 
173
188
  const props = withDefaults(defineProps<Props>(), {
@@ -178,7 +193,7 @@ const props = withDefaults(defineProps<Props>(), {
178
193
  }
179
194
  return { href: route + i.toString(), i }
180
195
  },
181
- extraPages: 3,
196
+ extraPages: 3
182
197
  })
183
198
  const $attrs = useAttrs()
184
199
 
@@ -216,10 +231,9 @@ const extraPagesNext = computed(() => [...Array(props.extraPages + 1)].map((_, i
216
231
  if (num <= firstLink.value.i || num >= lastLink.value.i || num <= currentLink.value.i) return undefined
217
232
  return props.customRoute(props.route, num)
218
233
  }).filter(entry => entry !== undefined).slice(0, props.extraPages) as HrefInfo[])
219
-
220
234
  </script>
221
- <script lang="ts">
222
235
 
236
+ <script lang="ts">
223
237
  /**
224
238
  * Pagination component.
225
239
  *
@@ -231,7 +245,7 @@ const extraPagesNext = computed(() => [...Array(props.extraPages + 1)].map((_, i
231
245
  * ```
232
246
  */
233
247
  export default {
234
- name: "lib-pagination",
248
+ name: "LibPagination"
235
249
  }
236
250
  type RealProps = {
237
251
  /** The total number of pages. */
@@ -254,7 +268,7 @@ type RealProps = {
254
268
  interface Props
255
269
  extends
256
270
  /** @vue-ignore */
257
- Partial<Omit<HTMLAttributes,"class"> & TailwindClassProp>,
271
+ Partial<Omit<HTMLAttributes, "class"> & TailwindClassProp>,
258
272
  RealProps
259
273
  {}
260
274
  </script>
@@ -4,29 +4,25 @@ import type { Meta, StoryObj } from "@storybook/vue3"
4
4
  import LibPalette from "./LibPalette.vue"
5
5
 
6
6
  import { theme } from "../../theme.js"
7
- // eslint-disable-next-line @typescript-eslint/no-restricted-imports
8
7
  import * as components from "../index.js"
9
8
 
10
-
11
9
  const meta: Meta<typeof LibPalette> = {
12
10
  component: LibPalette,
13
11
  title: "Components/Palette",
14
12
  args: {
15
13
  // theme,
16
- },
14
+ }
17
15
  }
18
16
 
19
17
  export default meta
20
18
  type Story = StoryObj<typeof LibPalette>
21
19
 
22
-
23
20
  export const Primary: Story = {
24
21
  render: args => ({
25
22
  components: { ...components, LibPalette },
26
23
  setup: () => ({ args: { ...args, theme } }),
27
24
  template: `
28
25
  <LibPalette v-bind="{...args}">{{args.value}}</LibPalette>
29
- `,
30
- }),
26
+ `
27
+ })
31
28
  }
32
-
@@ -2,7 +2,10 @@
2
2
  <div class="theme-palette flex h-full flex-col items-center justify-center ">
3
3
  <div class="theme-palette--container mx-auto ">
4
4
  <div class="grid grid-cols-11 gap-2 gap-y-10 px-10">
5
- <template v-for="color, i in colors" :key="color">
5
+ <template
6
+ v-for="color, i in colors"
7
+ :key="color"
8
+ >
6
9
  <div
7
10
  :style="`background-color: var(${color});`"
8
11
  :class="`theme-palette--item h-10 rounded-sm flex items-center justify-center text-fg dark:text-bg`"
@@ -23,27 +26,25 @@
23
26
  </template>
24
27
 
25
28
  <script lang="ts">
26
- export default { name: "lib-palette" }
29
+ export default { name: "LibPalette" }
27
30
  </script>
28
31
 
29
32
  <script setup lang="ts">
30
33
  import { keys } from "@alanscodelog/utils/keys"
31
- import { type Theme } from "metamorphosis"
32
-
33
- import { type BaseInteractiveProps,type LinkableByIdProps } from "../shared/props.js"
34
+ import type { Theme } from "metamorphosis"
34
35
 
36
+ import type { BaseInteractiveProps, LinkableByIdProps } from "../shared/props.js"
35
37
 
36
38
  const props = withDefaults(defineProps<
37
- & LinkableByIdProps
38
- & BaseInteractiveProps
39
- & {
40
- theme: Theme
41
- }>(), {
39
+ & LinkableByIdProps
40
+ & BaseInteractiveProps
41
+ & {
42
+ theme?: Theme
43
+ }>(), {
42
44
  theme: () => ({} as any),
43
- unstyle: false, disabled: false, readonly: false, border: true,
45
+ unstyle: false, disabled: false, readonly: false, border: true
44
46
  })
45
47
 
46
48
  const exclude = ["--color-bg", "--color-fg"]
47
49
  const colors = keys(props.theme.css).filter(key => key.startsWith("--color") && !exclude.includes(key))
48
-
49
50
  </script>