@nsaa/core 0.1.0-alpha.0 → 0.1.0-alpha.2

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 (238) hide show
  1. package/dist/accordion/accordion.d.ts +7 -0
  2. package/dist/accordion/accordion.js +54 -0
  3. package/dist/accordion/index.d.ts +3 -0
  4. package/dist/alert/alert.d.ts +18 -0
  5. package/dist/alert/alert.js +53 -0
  6. package/dist/alert/index.d.ts +3 -0
  7. package/dist/alert-dialog/alert-dialog.d.ts +19 -0
  8. package/dist/alert-dialog/alert-dialog.js +100 -0
  9. package/dist/alert-dialog/index.d.ts +3 -0
  10. package/dist/avatar/avatar.d.ts +12 -0
  11. package/dist/avatar/avatar.js +50 -0
  12. package/dist/avatar/index.d.ts +3 -0
  13. package/dist/badge/badge.d.ts +8 -0
  14. package/dist/badge/badge.js +29 -0
  15. package/dist/badge/index.d.ts +3 -0
  16. package/dist/button/button.d.ts +25 -0
  17. package/dist/button/button.js +136 -0
  18. package/dist/button/index.d.ts +3 -0
  19. package/dist/calendar/calendar.d.ts +11 -0
  20. package/dist/calendar/calendar.js +131 -0
  21. package/dist/calendar/index.d.ts +3 -0
  22. package/dist/card/card.d.ts +12 -0
  23. package/dist/card/card.js +55 -0
  24. package/dist/card/index.d.ts +3 -0
  25. package/dist/checkbox/checkbox.d.ts +4 -0
  26. package/dist/checkbox/checkbox.js +35 -0
  27. package/dist/checkbox/index.d.ts +3 -0
  28. package/dist/collapsible/collapsible.d.ts +6 -0
  29. package/dist/collapsible/collapsible.js +24 -0
  30. package/dist/collapsible/index.d.ts +3 -0
  31. package/dist/combobox/combobox.d.ts +27 -0
  32. package/dist/combobox/combobox.js +226 -0
  33. package/dist/combobox/index.d.ts +3 -0
  34. package/dist/command/command.d.ts +20 -0
  35. package/dist/command/command.js +116 -0
  36. package/dist/command/index.d.ts +3 -0
  37. package/dist/context-menu/context-menu.d.ts +30 -0
  38. package/dist/context-menu/context-menu.js +173 -0
  39. package/dist/context-menu/index.d.ts +3 -0
  40. package/dist/dialog/dialog.d.ts +18 -0
  41. package/dist/dialog/dialog.js +106 -0
  42. package/dist/dialog/index.d.ts +3 -0
  43. package/dist/direction.d.ts +3 -0
  44. package/dist/direction.js +2 -0
  45. package/dist/drawer/drawer.d.ts +17 -0
  46. package/dist/drawer/drawer.js +136 -0
  47. package/dist/drawer/index.d.ts +3 -0
  48. package/dist/dropdown-menu/dropdown-menu.d.ts +30 -0
  49. package/dist/dropdown-menu/dropdown-menu.js +177 -0
  50. package/dist/dropdown-menu/index.d.ts +3 -0
  51. package/dist/empty/empty.d.ts +35 -0
  52. package/dist/empty/empty.js +93 -0
  53. package/dist/empty/index.d.ts +3 -0
  54. package/dist/field/field.d.ts +26 -0
  55. package/dist/field/field.js +109 -0
  56. package/dist/field/index.d.ts +3 -0
  57. package/dist/index.d.ts +89 -631
  58. package/dist/index.js +49 -3527
  59. package/dist/input/index.d.ts +3 -0
  60. package/dist/input/input.d.ts +4 -0
  61. package/dist/input/input.js +14 -0
  62. package/dist/input-group/index.d.ts +3 -0
  63. package/dist/input-group/input-group.d.ts +19 -0
  64. package/dist/input-group/input-group.js +78 -0
  65. package/dist/input-otp/index.d.ts +3 -0
  66. package/dist/input-otp/input-otp.d.ts +12 -0
  67. package/dist/input-otp/input-otp.js +73 -0
  68. package/dist/kbd/index.d.ts +3 -0
  69. package/dist/kbd/kbd.d.ts +5 -0
  70. package/dist/kbd/kbd.js +19 -0
  71. package/dist/label/index.d.ts +3 -0
  72. package/dist/label/label.d.ts +4 -0
  73. package/dist/label/label.js +13 -0
  74. package/dist/legacy/icon-button/icon-swap.js +58 -0
  75. package/dist/lib/cn.d.ts +3 -0
  76. package/dist/{cn-DxFBFdwT.js → lib/cn.js} +1 -1
  77. package/dist/lib/control-defaults.js +8 -0
  78. package/dist/lib/icon-swap.d.ts +15 -0
  79. package/dist/lib/icon-swap.js +26 -0
  80. package/dist/lib/input-modality.js +39 -0
  81. package/dist/lib/merge-refs.js +21 -0
  82. package/dist/lib/shortcut.js +50 -0
  83. package/dist/lib/track-input-modality.d.ts +2 -0
  84. package/dist/lib/track-input-modality.js +4 -0
  85. package/dist/lib/tv.js +7 -0
  86. package/dist/lib/use-press.js +48 -0
  87. package/dist/lib/user-action.js +13 -0
  88. package/dist/loaders/arc.d.ts +6 -0
  89. package/dist/loaders/arc.js +31 -0
  90. package/dist/loaders/atom.d.ts +5 -0
  91. package/dist/loaders/atom.js +70 -0
  92. package/dist/loaders/blocks.d.ts +8 -0
  93. package/dist/loaders/blocks.js +74 -0
  94. package/dist/loaders/bouncing-dots.d.ts +3 -0
  95. package/dist/loaders/bouncing-dots.js +45 -0
  96. package/dist/loaders/cap.d.ts +6 -0
  97. package/dist/loaders/cap.js +7 -0
  98. package/dist/loaders/cascade.d.ts +5 -0
  99. package/dist/loaders/cascade.js +50 -0
  100. package/dist/loaders/circular-dots.d.ts +3 -0
  101. package/dist/loaders/circular-dots.js +40 -0
  102. package/dist/loaders/classic-v2.d.ts +3 -0
  103. package/dist/loaders/classic-v2.js +41 -0
  104. package/dist/loaders/classic.d.ts +3 -0
  105. package/dist/loaders/classic.js +48 -0
  106. package/dist/loaders/clock.d.ts +5 -0
  107. package/dist/loaders/clock.js +31 -0
  108. package/dist/loaders/comet.d.ts +5 -0
  109. package/dist/loaders/comet.js +52 -0
  110. package/dist/loaders/compass.d.ts +3 -0
  111. package/dist/loaders/compass.js +39 -0
  112. package/dist/loaders/dual.d.ts +6 -0
  113. package/dist/loaders/dual.js +47 -0
  114. package/dist/loaders/easing.d.ts +6 -0
  115. package/dist/loaders/easing.js +34 -0
  116. package/dist/loaders/eclipse.d.ts +3 -0
  117. package/dist/loaders/eclipse.js +69 -0
  118. package/dist/loaders/fade.js +28 -0
  119. package/dist/loaders/flip.d.ts +3 -0
  120. package/dist/loaders/flip.js +41 -0
  121. package/dist/{frame-CK9IBOZB.js → loaders/frame.js} +2 -50
  122. package/dist/loaders/gather.d.ts +3 -0
  123. package/dist/loaders/gather.js +85 -0
  124. package/dist/loaders/leap.d.ts +3 -0
  125. package/dist/loaders/leap.js +67 -0
  126. package/dist/loaders/linear-dots.d.ts +3 -0
  127. package/dist/loaders/linear-dots.js +54 -0
  128. package/dist/loaders/loading.d.ts +3 -0
  129. package/dist/loaders/loading.js +64 -0
  130. package/dist/loaders/morph.d.ts +3 -0
  131. package/dist/loaders/morph.js +40 -0
  132. package/dist/loaders/motion.d.ts +35 -0
  133. package/dist/loaders/motion.js +51 -0
  134. package/dist/loaders/orbit.d.ts +5 -0
  135. package/dist/loaders/orbit.js +44 -0
  136. package/dist/loaders/pulse.d.ts +3 -0
  137. package/dist/loaders/pulse.js +52 -0
  138. package/dist/loaders/radar.d.ts +5 -0
  139. package/dist/loaders/radar.js +64 -0
  140. package/dist/loaders/ring.d.ts +6 -0
  141. package/dist/loaders/ring.js +38 -0
  142. package/dist/loaders/ripple.d.ts +8 -0
  143. package/dist/loaders/ripple.js +57 -0
  144. package/dist/loaders/slide.d.ts +3 -0
  145. package/dist/loaders/slide.js +74 -0
  146. package/dist/loaders/snake.d.ts +6 -0
  147. package/dist/loaders/snake.js +59 -0
  148. package/dist/loaders/spinners.d.ts +61 -0
  149. package/dist/loaders/spinners.js +63 -0
  150. package/dist/loaders/swirl.d.ts +3 -0
  151. package/dist/loaders/swirl.js +50 -0
  152. package/dist/loaders/text/shared.js +25 -0
  153. package/dist/loaders/text/text-loaders.d.ts +48 -0
  154. package/dist/loaders/text/text-loaders.js +723 -0
  155. package/dist/loaders/trace.d.ts +6 -0
  156. package/dist/loaders/trace.js +46 -0
  157. package/dist/loaders/types.d.ts +10 -0
  158. package/dist/loaders/wave.d.ts +8 -0
  159. package/dist/loaders/wave.js +59 -0
  160. package/dist/loaders-text.d.ts +2 -47
  161. package/dist/loaders-text.js +1 -743
  162. package/dist/loaders.d.ts +36 -132
  163. package/dist/loaders.js +35 -1096
  164. package/dist/native-select/index.d.ts +3 -0
  165. package/dist/native-select/native-select.d.ts +9 -0
  166. package/dist/native-select/native-select.js +44 -0
  167. package/dist/pagination/index.d.ts +3 -0
  168. package/dist/pagination/pagination.d.ts +18 -0
  169. package/dist/pagination/pagination.js +134 -0
  170. package/dist/popover/index.d.ts +3 -0
  171. package/dist/popover/popover.d.ts +10 -0
  172. package/dist/popover/popover.js +54 -0
  173. package/dist/radio-group/index.d.ts +3 -0
  174. package/dist/radio-group/radio-group.d.ts +6 -0
  175. package/dist/radio-group/radio-group.js +33 -0
  176. package/dist/select/index.d.ts +3 -0
  177. package/dist/select/select.d.ts +16 -0
  178. package/dist/select/select.js +148 -0
  179. package/dist/separator/index.d.ts +3 -0
  180. package/dist/separator/separator.d.ts +4 -0
  181. package/dist/separator/separator.js +15 -0
  182. package/dist/skeleton/index.d.ts +3 -0
  183. package/dist/skeleton/skeleton.d.ts +10 -0
  184. package/dist/skeleton/skeleton.js +24 -0
  185. package/dist/slider/index.d.ts +3 -0
  186. package/dist/slider/slider.d.ts +4 -0
  187. package/dist/slider/slider.js +39 -0
  188. package/dist/sound/sound-map.d.ts +70 -0
  189. package/dist/sound/sound-map.js +72 -0
  190. package/dist/sound/sound.d.ts +38 -0
  191. package/dist/sound/sound.js +136 -0
  192. package/dist/sound/uisfx.d.ts +37 -0
  193. package/dist/sound/uisfx.js +59 -0
  194. package/dist/sound-uisfx.d.ts +2 -37
  195. package/dist/sound-uisfx.js +1 -58
  196. package/dist/spinner/index.d.ts +5 -0
  197. package/dist/spinner/loader-provider.d.ts +16 -0
  198. package/dist/spinner/loader-provider.js +28 -0
  199. package/dist/spinner/registry.d.ts +9 -0
  200. package/dist/spinner/registry.js +15 -0
  201. package/dist/spinner/spinner.d.ts +26 -0
  202. package/dist/spinner/spinner.js +143 -0
  203. package/dist/switch/index.d.ts +3 -0
  204. package/dist/switch/switch.d.ts +6 -0
  205. package/dist/switch/switch.js +25 -0
  206. package/dist/table/index.d.ts +3 -0
  207. package/dist/table/table.d.ts +17 -0
  208. package/dist/table/table.js +66 -0
  209. package/dist/tabs/index.d.ts +3 -0
  210. package/dist/tabs/tabs.d.ts +11 -0
  211. package/dist/tabs/tabs.js +46 -0
  212. package/dist/textarea/index.d.ts +3 -0
  213. package/dist/textarea/textarea.d.ts +4 -0
  214. package/dist/textarea/textarea.js +12 -0
  215. package/dist/toast/index.d.ts +3 -0
  216. package/dist/toast/toast.d.ts +17 -0
  217. package/dist/toast/toast.js +211 -0
  218. package/dist/toggle-group/index.d.ts +3 -0
  219. package/dist/toggle-group/toggle-group.d.ts +64 -0
  220. package/dist/toggle-group/toggle-group.js +95 -0
  221. package/dist/tokens/dist/motion.d.ts +24 -0
  222. package/dist/{motion-NQq2BA78.js → tokens/dist/motion.js} +1 -1
  223. package/dist/toolbar/index.d.ts +3 -0
  224. package/dist/toolbar/overflow.d.ts +4 -0
  225. package/dist/toolbar/overflow.js +242 -0
  226. package/dist/toolbar/toolbar-item.d.ts +29 -0
  227. package/dist/toolbar/toolbar-item.js +71 -0
  228. package/dist/toolbar/toolbar.d.ts +73 -0
  229. package/dist/toolbar/toolbar.js +250 -0
  230. package/dist/tooltip/index.d.ts +3 -0
  231. package/dist/tooltip/tooltip.d.ts +7 -0
  232. package/dist/tooltip/tooltip.js +41 -0
  233. package/package.json +5 -3
  234. package/src/feel.css +18 -6
  235. package/src/styles.css +19 -1
  236. package/dist/registry-2PyPW9Xw.js +0 -390
  237. package/dist/registry-DjfWNw3R.d.ts +0 -18
  238. package/dist/sound-DiYNAnR_.d.ts +0 -61
@@ -1,744 +1,2 @@
1
1
  "use client";
2
- import { t as cn } from "./cn-DxFBFdwT.js";
3
- import { i as reducedMotion, t as PauseStyle } from "./frame-CK9IBOZB.js";
4
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
- // src/loaders/text/shared.tsx
6
- /** A loader's turn: the prop, else an ancestor's `--nsaa-loader-duration`, else its token. */
7
- function textDuration(name) {
8
- return `var(--nsaa-loader-duration, var(--nsaa-loader-duration-${name}))`;
9
- }
10
- const PLAY_STATE = "var(--nsaa-loader-play-state, running)";
11
- /** Scoped keyframes and rules, deduped by React 19 (`<style href precedence>`). */
12
- function TextLoaderStyle({ name, css, reduced }) {
13
- return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(PauseStyle, {}), /* @__PURE__ */ jsx("style", {
14
- href: `nsaa-loader-${name}`,
15
- precedence: "nsaa-loaders",
16
- children: `${css}\n${reducedMotion(reduced)}`
17
- })] });
18
- }
19
- /** The visually hidden words a status announces (the animated copy is aria-hidden). */
20
- function StatusLabel({ children }) {
21
- return /* @__PURE__ */ jsx("span", {
22
- className: "sr-only",
23
- children
24
- });
25
- }
26
- // src/loaders/text/text-loaders.tsx
27
- const durationVar = (duration) => duration === void 0 ? void 0 : { "--nsaa-loader-duration": `${duration}ms` };
28
- const SHIMMER = `
29
- .nsaa-loader-shimmer-text {
30
- --nsaa-loader-spread: calc(var(--nsaa-loader-chars, 10) * 2px);
31
- display: inline-block;
32
- -webkit-text-fill-color: transparent;
33
- background-image:
34
- linear-gradient(90deg, transparent calc(50% - var(--nsaa-loader-spread)), currentColor, transparent calc(50% + var(--nsaa-loader-spread))),
35
- linear-gradient(color-mix(in oklab, currentColor 55%, transparent), color-mix(in oklab, currentColor 55%, transparent));
36
- background-size: 250% 100%, auto;
37
- background-repeat: no-repeat, padding-box;
38
- background-clip: text;
39
- -webkit-background-clip: text;
40
- animation: nsaa-loader-shimmer-text ${textDuration("shimmer-text")} linear infinite;
41
- animation-play-state: ${PLAY_STATE};
42
- }
43
- @keyframes nsaa-loader-shimmer-text {
44
- from { background-position: 100% center, 0 0; }
45
- to { background-position: 0% center, 0 0; }
46
- }
47
- @media (forced-colors: active) {
48
- .nsaa-loader-shimmer-text {
49
- -webkit-text-fill-color: CanvasText;
50
- background: none;
51
- animation: none;
52
- }
53
- }`;
54
- const STATIC_SHIMMER = `
55
- .nsaa-loader-shimmer-text {
56
- -webkit-text-fill-color: currentColor;
57
- background: none;
58
- animation: none;
59
- }`;
60
- /** "Thinking…", "Processing payment…": a light band sweeps across the words. Static text under reduced motion. */
61
- function ShimmerText({ children, label, duration, className, style, ...props }) {
62
- return /* @__PURE__ */ jsxs("span", {
63
- role: "status",
64
- "data-slot": "shimmer-text",
65
- className,
66
- style: {
67
- ...durationVar(duration),
68
- ...style
69
- },
70
- ...props,
71
- children: [
72
- /* @__PURE__ */ jsx(TextLoaderStyle, {
73
- name: "shimmer-text",
74
- css: SHIMMER,
75
- reduced: STATIC_SHIMMER
76
- }),
77
- /* @__PURE__ */ jsx(StatusLabel, { children: label ?? children }),
78
- /* @__PURE__ */ jsx("span", {
79
- "aria-hidden": "true",
80
- "data-loader": "shimmer-text",
81
- className: "nsaa-loader-shimmer-text",
82
- style: { "--nsaa-loader-chars": children.length },
83
- children
84
- })
85
- ]
86
- });
87
- }
88
- const WAVE = `
89
- .nsaa-loader-shimmer-wave > span {
90
- display: inline-block;
91
- white-space: pre;
92
- opacity: 0.55;
93
- animation: nsaa-loader-shimmer-wave ${textDuration("shimmer-wave")} ease-in-out infinite;
94
- animation-delay: calc(${textDuration("shimmer-wave")} * var(--nsaa-loader-i) / var(--nsaa-loader-count));
95
- animation-play-state: ${PLAY_STATE};
96
- }
97
- @keyframes nsaa-loader-shimmer-wave {
98
- 0%, 60%, 100% { opacity: 0.55; transform: none; }
99
- 30% { opacity: 1; transform: translateY(-2px) scale(1.1); }
100
- }`;
101
- const STATIC_WAVE = `
102
- .nsaa-loader-shimmer-wave > span {
103
- opacity: 1;
104
- animation: none;
105
- }`;
106
- /** Longer AI status lines: each letter lifts and brightens in turn. Static text under reduced motion. */
107
- function ShimmerWave({ children, label, duration, className, style, ...props }) {
108
- const letters = typeof Intl !== "undefined" && "Segmenter" in Intl ? [...new Intl.Segmenter(void 0, { granularity: "grapheme" }).segment(children)].map((s) => s.segment) : [...children];
109
- return /* @__PURE__ */ jsxs("span", {
110
- role: "status",
111
- "data-slot": "shimmer-wave",
112
- className,
113
- style: {
114
- ...durationVar(duration),
115
- ...style
116
- },
117
- ...props,
118
- children: [
119
- /* @__PURE__ */ jsx(TextLoaderStyle, {
120
- name: "shimmer-wave",
121
- css: WAVE,
122
- reduced: STATIC_WAVE
123
- }),
124
- /* @__PURE__ */ jsx(StatusLabel, { children: label ?? children }),
125
- /* @__PURE__ */ jsx("span", {
126
- "aria-hidden": "true",
127
- "data-loader": "shimmer-wave",
128
- className: "nsaa-loader-shimmer-wave",
129
- style: { "--nsaa-loader-count": letters.length },
130
- children: letters.map((letter, i) => /* @__PURE__ */ jsx("span", {
131
- style: { "--nsaa-loader-i": i },
132
- children: letter
133
- }, i))
134
- })
135
- ]
136
- });
137
- }
138
- const DOTS = `
139
- .nsaa-loader-text-dots > span {
140
- animation: nsaa-loader-text-dots ${textDuration("text-dots")} infinite;
141
- animation-delay: calc(${textDuration("text-dots")} / 7 * (var(--nsaa-loader-i) + 1));
142
- animation-play-state: ${PLAY_STATE};
143
- }
144
- @keyframes nsaa-loader-text-dots {
145
- 0%, 100% { opacity: 0; }
146
- 50% { opacity: 1; }
147
- }`;
148
- const STATIC_DOTS = `
149
- .nsaa-loader-text-dots > span {
150
- opacity: 1;
151
- animation: none;
152
- }`;
153
- /** "Loading…" with dots that step in. A static "…" under reduced motion. */
154
- function TextDots({ children, dots = 3, duration, className, style, ...props }) {
155
- const count = Number.isFinite(dots) ? Math.max(1, Math.floor(dots)) : 3;
156
- return /* @__PURE__ */ jsxs("span", {
157
- role: "status",
158
- "data-slot": "text-dots",
159
- className: cn("inline-flex items-baseline", className),
160
- style: {
161
- ...durationVar(duration),
162
- ...style
163
- },
164
- ...props,
165
- children: [
166
- /* @__PURE__ */ jsx(TextLoaderStyle, {
167
- name: "text-dots",
168
- css: DOTS,
169
- reduced: STATIC_DOTS
170
- }),
171
- /* @__PURE__ */ jsx("span", { children }),
172
- /* @__PURE__ */ jsx("span", {
173
- "aria-hidden": "true",
174
- "data-loader": "text-dots",
175
- className: "nsaa-loader-text-dots inline-flex",
176
- children: Array.from({ length: count }, (_, i) => /* @__PURE__ */ jsx("span", {
177
- style: { "--nsaa-loader-i": i },
178
- children: "."
179
- }, i))
180
- })
181
- ]
182
- });
183
- }
184
- const TYPING = `
185
- .nsaa-loader-typing {
186
- display: inline-flex;
187
- align-items: center;
188
- gap: 12%;
189
- width: calc(var(--nsaa-loader-size, var(--nsaa-loader-size-md)) * 2);
190
- height: var(--nsaa-loader-size, var(--nsaa-loader-size-md));
191
- }
192
- .nsaa-loader-typing > span {
193
- flex: 1;
194
- aspect-ratio: 1;
195
- border-radius: 50%;
196
- background: currentColor;
197
- opacity: 0.5;
198
- animation: nsaa-loader-typing ${textDuration("typing")} infinite;
199
- animation-delay: calc(${textDuration("typing")} * 0.16 * var(--nsaa-loader-i));
200
- animation-play-state: ${PLAY_STATE};
201
- }
202
- @keyframes nsaa-loader-typing {
203
- 0%, 100% { transform: translateY(0); opacity: 0.5; }
204
- 50% { transform: translateY(-50%); opacity: 1; }
205
- }`;
206
- const STATIC_TYPING = `
207
- .nsaa-loader-typing > span {
208
- opacity: 1;
209
- animation: none;
210
- }`;
211
- /** A chat "is typing" bubble: three dots bob in turn. Three static dots under reduced motion. */
212
- function Typing({ dots = 3, label = "Typing", duration, className, style, ...props }) {
213
- return /* @__PURE__ */ jsxs("span", {
214
- role: "status",
215
- "data-slot": "typing",
216
- className,
217
- style: {
218
- ...durationVar(duration),
219
- ...style
220
- },
221
- ...props,
222
- children: [
223
- /* @__PURE__ */ jsx(TextLoaderStyle, {
224
- name: "typing",
225
- css: TYPING,
226
- reduced: STATIC_TYPING
227
- }),
228
- /* @__PURE__ */ jsx(StatusLabel, { children: label }),
229
- /* @__PURE__ */ jsx("span", {
230
- "aria-hidden": "true",
231
- "data-loader": "typing",
232
- className: "nsaa-loader-typing",
233
- children: Array.from({ length: dots }, (_, i) => /* @__PURE__ */ jsx("span", { style: { "--nsaa-loader-i": i } }, i))
234
- })
235
- ]
236
- });
237
- }
238
- const ANALYZING = `
239
- .nsaa-loader-analyzing-image {
240
- position: relative;
241
- isolation: isolate;
242
- display: inline-block;
243
- width: calc(var(--nsaa-loader-size, var(--nsaa-loader-size-xl)) * 2);
244
- aspect-ratio: 1;
245
- }
246
- .nsaa-loader-analyzing-image > * {
247
- position: absolute;
248
- inset: 0;
249
- }
250
- .nsaa-loader-analyzing-image-cover {
251
- background: var(--nsaa-loader-background, var(--nsaa-color-page));
252
- transform-origin: left center;
253
- animation: nsaa-loader-analyzing-cover ${textDuration("analyzing-image")} var(--nsaa-ease-out) infinite alternate;
254
- animation-play-state: ${PLAY_STATE};
255
- }
256
- .nsaa-loader-analyzing-image-scan {
257
- inset: 0 auto 0 0;
258
- width: 7%;
259
- border-radius: calc(infinity * 1px);
260
- background: currentColor;
261
- animation: nsaa-loader-analyzing-scan ${textDuration("analyzing-image")} var(--nsaa-ease-out) infinite alternate;
262
- animation-play-state: ${PLAY_STATE};
263
- }
264
- @keyframes nsaa-loader-analyzing-cover {
265
- 0% { transform: scaleX(1); }
266
- 60%, 100% { transform: scaleX(0); }
267
- }
268
- @keyframes nsaa-loader-analyzing-scan {
269
- 0% { transform: translateX(1400%); }
270
- 60%, 100% { transform: translateX(-80%); }
271
- }`;
272
- const STATIC_ANALYZING = `
273
- .nsaa-loader-analyzing-image-cover {
274
- animation: none;
275
- transform: none;
276
- }
277
- .nsaa-loader-analyzing-image-scan {
278
- display: none;
279
- }`;
280
- const FRAME = "M6.8 21H17.2C18.8802 21 19.7202 21 20.362 20.673C20.9265 20.3854 21.3854 19.9265 21.673 19.362C22 18.7202 22 17.8802 22 16.2V7.8C22 6.11984 22 5.27976 21.673 4.63803C21.3854 4.07354 20.9265 3.6146 20.362 3.32698C19.7202 3 18.8802 3 17.2 3H6.8C5.11984 3 4.27976 3 3.63803 3.32698C3.07354 3.6146 2.6146 4.07354 2.32698 4.63803C2 5.27976 2 6.11984 2 7.8V16.2C2 17.8802 2 18.7202 2.32698 19.362C2.6146 19.9265 3.07354 20.3854 3.63803 20.673C4.27976 21 5.11984 21 6.8 21Z";
281
- const PICTURE = "M4.27209 20.7279L10.8686 14.1314C11.2646 13.7354 11.4627 13.5373 11.691 13.4632C11.8918 13.3979 12.1082 13.3979 12.309 13.4632C12.5373 13.5373 12.7354 13.7354 13.1314 14.1314L19.6839 20.6839M14 15L16.8686 12.1314C17.2646 11.7354 17.4627 11.5373 17.691 11.4632C17.8918 11.3979 18.1082 11.3979 18.309 11.4632C18.5373 11.5373 18.7354 11.7354 19.1314 12.1314L22 15M10 9C10 10.1046 9.10457 11 8 11C6.89543 11 6 10.1046 6 9C6 7.89543 6.89543 7 8 7C9.10457 7 10 7.89543 10 9Z";
282
- const NOISE = [
283
- [
284
- 6,
285
- 19,
286
- 1,
287
- 1
288
- ],
289
- [
290
- 7,
291
- 18,
292
- 1,
293
- 1
294
- ],
295
- [
296
- 7,
297
- 19,
298
- 3,
299
- 1
300
- ],
301
- [
302
- 9,
303
- 18,
304
- 1,
305
- 1
306
- ],
307
- [
308
- 14,
309
- 19,
310
- 3,
311
- 1
312
- ],
313
- [
314
- 15,
315
- 18,
316
- 1,
317
- 1
318
- ],
319
- [
320
- 5,
321
- 18,
322
- 2,
323
- 1
324
- ],
325
- [
326
- 5,
327
- 17,
328
- 1,
329
- 1
330
- ],
331
- [
332
- 10,
333
- 19,
334
- 1,
335
- 1
336
- ],
337
- [
338
- 7,
339
- 17,
340
- 1,
341
- 1
342
- ],
343
- [
344
- 11,
345
- 19,
346
- 1,
347
- 1
348
- ],
349
- [
350
- 10,
351
- 18,
352
- 1,
353
- 1
354
- ],
355
- [
356
- 17,
357
- 19,
358
- 1,
359
- 1
360
- ],
361
- [
362
- 15,
363
- 4,
364
- 2,
365
- 1
366
- ],
367
- [
368
- 3,
369
- 9,
370
- 1,
371
- 3
372
- ],
373
- [
374
- 4,
375
- 10,
376
- 1,
377
- 2
378
- ],
379
- [
380
- 6,
381
- 9,
382
- 1,
383
- 1
384
- ],
385
- [
386
- 15,
387
- 5,
388
- 1,
389
- 1
390
- ],
391
- [
392
- 20,
393
- 8,
394
- 1,
395
- 3
396
- ],
397
- [
398
- 19,
399
- 9,
400
- 1,
401
- 1
402
- ],
403
- [
404
- 7,
405
- 13,
406
- 1,
407
- 1
408
- ],
409
- [
410
- 9,
411
- 11,
412
- 1,
413
- 1
414
- ],
415
- [
416
- 16,
417
- 12,
418
- 1,
419
- 2
420
- ],
421
- [
422
- 13,
423
- 14,
424
- 1,
425
- 1
426
- ],
427
- [
428
- 12,
429
- 11,
430
- 1,
431
- 1
432
- ],
433
- [
434
- 10,
435
- 9,
436
- 1,
437
- 1
438
- ],
439
- [
440
- 10,
441
- 15,
442
- 1,
443
- 1
444
- ],
445
- [
446
- 10,
447
- 13,
448
- 1,
449
- 1
450
- ],
451
- [
452
- 15,
453
- 9,
454
- 1,
455
- 1
456
- ],
457
- [
458
- 13,
459
- 10,
460
- 1,
461
- 1
462
- ],
463
- [
464
- 12,
465
- 14,
466
- 1,
467
- 1
468
- ],
469
- [
470
- 5,
471
- 4,
472
- 3,
473
- 1
474
- ],
475
- [
476
- 6,
477
- 5,
478
- 1,
479
- 1
480
- ],
481
- [
482
- 7,
483
- 14,
484
- 1,
485
- 2
486
- ],
487
- [
488
- 6,
489
- 14,
490
- 3,
491
- 1
492
- ],
493
- [
494
- 16,
495
- 8,
496
- 1,
497
- 1
498
- ],
499
- [
500
- 8,
501
- 9,
502
- 1,
503
- 1
504
- ],
505
- [
506
- 20,
507
- 16,
508
- 1,
509
- 1
510
- ],
511
- [
512
- 12,
513
- 12,
514
- 1,
515
- 1
516
- ],
517
- [
518
- 8,
519
- 8,
520
- 1,
521
- 1
522
- ],
523
- [
524
- 14,
525
- 12,
526
- 1,
527
- 1
528
- ],
529
- [
530
- 17,
531
- 16,
532
- 2,
533
- 1
534
- ],
535
- [
536
- 14,
537
- 17,
538
- 1,
539
- 1
540
- ],
541
- [
542
- 11,
543
- 5,
544
- 3,
545
- 1
546
- ],
547
- [
548
- 12,
549
- 4,
550
- 1,
551
- 1
552
- ],
553
- [
554
- 12,
555
- 7,
556
- 1,
557
- 1
558
- ],
559
- [
560
- 7,
561
- 11,
562
- 1,
563
- 1
564
- ],
565
- [
566
- 15,
567
- 15,
568
- 1,
569
- 1
570
- ],
571
- [
572
- 11,
573
- 11,
574
- 1,
575
- 1
576
- ],
577
- [
578
- 13,
579
- 9,
580
- 1,
581
- 1
582
- ],
583
- [
584
- 12,
585
- 15,
586
- 1,
587
- 1
588
- ],
589
- [
590
- 9,
591
- 12,
592
- 2,
593
- 1
594
- ],
595
- [
596
- 19,
597
- 13,
598
- 2,
599
- 1
600
- ],
601
- [
602
- 9,
603
- 6,
604
- 1,
605
- 1
606
- ],
607
- [
608
- 20,
609
- 4,
610
- 1,
611
- 1
612
- ],
613
- [
614
- 19,
615
- 4,
616
- 1,
617
- 1
618
- ],
619
- [
620
- 3,
621
- 15,
622
- 1,
623
- 2
624
- ],
625
- [
626
- 3,
627
- 19,
628
- 1,
629
- 1
630
- ]
631
- ];
632
- /** An image upload or scan: the picture dissolves into pixels behind a scan line. A static picture under reduced motion. */
633
- function AnalyzingImage({ label = "Analyzing image", duration, className, style, ...props }) {
634
- const stroke = {
635
- stroke: "currentColor",
636
- strokeWidth: 1.5,
637
- strokeLinecap: "round",
638
- strokeLinejoin: "round"
639
- };
640
- return /* @__PURE__ */ jsxs("span", {
641
- role: "status",
642
- "data-slot": "analyzing-image",
643
- className: cn("inline-block", className),
644
- style: {
645
- ...durationVar(duration),
646
- ...style
647
- },
648
- ...props,
649
- children: [
650
- /* @__PURE__ */ jsx(TextLoaderStyle, {
651
- name: "analyzing-image",
652
- css: ANALYZING,
653
- reduced: STATIC_ANALYZING
654
- }),
655
- /* @__PURE__ */ jsx(StatusLabel, { children: label }),
656
- /* @__PURE__ */ jsxs("span", {
657
- "aria-hidden": "true",
658
- "data-loader": "analyzing-image",
659
- className: "nsaa-loader-analyzing-image",
660
- children: [
661
- /* @__PURE__ */ jsxs("svg", {
662
- viewBox: "0 0 24 24",
663
- fill: "none",
664
- "aria-hidden": "true",
665
- children: [/* @__PURE__ */ jsx("path", {
666
- d: FRAME,
667
- ...stroke
668
- }), NOISE.map(([x, y, width, height]) => /* @__PURE__ */ jsx("rect", {
669
- x,
670
- y,
671
- width,
672
- height,
673
- fill: "currentColor"
674
- }, `${x}-${y}`))]
675
- }),
676
- /* @__PURE__ */ jsx("span", { className: "nsaa-loader-analyzing-image-cover" }),
677
- /* @__PURE__ */ jsxs("svg", {
678
- viewBox: "0 0 24 24",
679
- fill: "none",
680
- "aria-hidden": "true",
681
- children: [/* @__PURE__ */ jsx("path", {
682
- d: FRAME,
683
- ...stroke
684
- }), /* @__PURE__ */ jsx("path", {
685
- d: PICTURE,
686
- ...stroke,
687
- className: "nsaa-loader-analyzing-image-picture"
688
- })]
689
- }),
690
- /* @__PURE__ */ jsx("span", { className: "nsaa-loader-analyzing-image-scan" })
691
- ]
692
- })
693
- ]
694
- });
695
- }
696
- const TERMINAL = `
697
- .nsaa-loader-terminal-cursor {
698
- display: inline-block;
699
- width: 0.5em;
700
- height: 1em;
701
- background: currentColor;
702
- animation: nsaa-loader-terminal ${textDuration("terminal")} step-end infinite;
703
- animation-play-state: ${PLAY_STATE};
704
- }
705
- @keyframes nsaa-loader-terminal {
706
- 0%, 100% { opacity: 1; }
707
- 50% { opacity: 0; }
708
- }`;
709
- const STATIC_TERMINAL = `
710
- .nsaa-loader-terminal-cursor {
711
- animation: none;
712
- }`;
713
- /** CLI or log-style progress: a prompt, the last line and a blinking cursor. Static under reduced motion. */
714
- function Terminal({ prompt = ">", children, label = "Loading", duration, className, style, ...props }) {
715
- return /* @__PURE__ */ jsxs("span", {
716
- role: "status",
717
- "data-slot": "terminal",
718
- className: cn("inline-flex items-center gap-[0.25em] font-mono", className),
719
- style: {
720
- ...durationVar(duration),
721
- ...style
722
- },
723
- ...props,
724
- children: [
725
- /* @__PURE__ */ jsx(TextLoaderStyle, {
726
- name: "terminal",
727
- css: TERMINAL,
728
- reduced: STATIC_TERMINAL
729
- }),
730
- /* @__PURE__ */ jsx(StatusLabel, { children: label }),
731
- /* @__PURE__ */ jsxs("span", {
732
- "aria-hidden": "true",
733
- "data-loader": "terminal",
734
- className: "inline-flex items-center gap-[0.25em]",
735
- children: [
736
- /* @__PURE__ */ jsx("span", { children: prompt }),
737
- children !== void 0 && /* @__PURE__ */ jsx("span", { children }),
738
- /* @__PURE__ */ jsx("span", { className: "nsaa-loader-terminal-cursor" })
739
- ]
740
- })
741
- ]
742
- });
743
- }
744
- export { AnalyzingImage, ShimmerText, ShimmerWave, Terminal, TextDots, Typing };
2
+ export { AnalyzingImage, ShimmerText, ShimmerWave, Terminal, TextDots, Typing } from "./loaders/text/text-loaders.js";