@toa.io/extensions.configuration 1.0.0-alpha.274 → 1.0.0-alpha.276

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 (501) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/components/configuration.values/operations/create.d.ts +16 -0
  3. package/components/configuration.values/operations/create.js +58 -0
  4. package/components/configuration.values/operations/create.js.map +1 -0
  5. package/components/configuration.values/operations/fetch.d.ts +11 -0
  6. package/components/configuration.values/operations/fetch.js +17 -0
  7. package/components/configuration.values/operations/fetch.js.map +1 -0
  8. package/components/configuration.values/operations/get.d.ts +17 -0
  9. package/components/configuration.values/operations/get.js +23 -0
  10. package/components/configuration.values/operations/get.js.map +1 -0
  11. package/components/configuration.values/operations/lib/map.d.ts +11 -0
  12. package/components/configuration.values/operations/lib/map.js +26 -0
  13. package/components/configuration.values/operations/lib/map.js.map +1 -0
  14. package/components/configuration.values/operations/lib/map.test.d.ts +1 -0
  15. package/components/configuration.values/operations/lib/map.test.js +26 -0
  16. package/components/configuration.values/operations/lib/map.test.js.map +1 -0
  17. package/components/configuration.values/operations/lib/resolve.d.ts +27 -0
  18. package/components/configuration.values/operations/lib/resolve.js +28 -0
  19. package/components/configuration.values/operations/lib/resolve.js.map +1 -0
  20. package/components/configuration.values/operations/list.d.ts +10 -0
  21. package/components/configuration.values/operations/list.js +15 -0
  22. package/components/configuration.values/operations/list.js.map +1 -0
  23. package/components/configuration.values/operations/tsconfig.tsbuildinfo +1 -0
  24. package/features/site/favicon.ico +0 -0
  25. package/features/ui.feature +8 -0
  26. package/package.json +2 -2
  27. package/source/Aspect.ts +7 -2
  28. package/source/UI.ts +16 -1
  29. package/source/deployment.ts +1 -1
  30. package/transpiled/Aspect.js +3 -2
  31. package/transpiled/Aspect.js.map +1 -1
  32. package/transpiled/UI.js +14 -1
  33. package/transpiled/UI.js.map +1 -1
  34. package/transpiled/deployment.d.ts +1 -1
  35. package/transpiled/tsconfig.tsbuildinfo +1 -1
  36. package/ui/dist/_app/env.js +1 -0
  37. package/ui/dist/_app/immutable/assets/0.CNS8Cqhc.css +2 -0
  38. package/ui/dist/_app/immutable/assets/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2 +0 -0
  39. package/ui/dist/_app/immutable/assets/inter-cyrillic-wght-normal.DqGufNeO.woff2 +0 -0
  40. package/ui/dist/_app/immutable/assets/inter-greek-ext-wght-normal.DlzME5K_.woff2 +0 -0
  41. package/ui/dist/_app/immutable/assets/inter-greek-wght-normal.CkhJZR-_.woff2 +0 -0
  42. package/ui/dist/_app/immutable/assets/inter-latin-ext-wght-normal.DO1Apj_S.woff2 +0 -0
  43. package/ui/dist/_app/immutable/assets/inter-latin-wght-normal.Dx4kXJAl.woff2 +0 -0
  44. package/ui/dist/_app/immutable/assets/inter-vietnamese-wght-normal.CBcvBZtf.woff2 +0 -0
  45. package/ui/dist/_app/immutable/assets/ui.BghF56l_.css +1 -0
  46. package/ui/dist/_app/immutable/chunks/Bjy-W4x2.js +81 -0
  47. package/ui/dist/_app/immutable/chunks/CDKtbN4n.js +6 -0
  48. package/ui/dist/_app/immutable/chunks/CcD_ISxM.js +3 -0
  49. package/ui/dist/_app/immutable/chunks/Chb3af1a.js +1 -0
  50. package/ui/dist/_app/immutable/chunks/Cov6-56A.js +50 -0
  51. package/ui/dist/_app/immutable/chunks/E7oj41Za.js +1 -0
  52. package/ui/dist/_app/immutable/chunks/MOpxGoVO.js +8 -0
  53. package/ui/dist/_app/immutable/chunks/xihTtKlq.js +1 -0
  54. package/ui/dist/_app/immutable/entry/app.B9v2AwU_.js +2 -0
  55. package/ui/dist/_app/immutable/entry/start.B97KALv1.js +1 -0
  56. package/ui/dist/_app/immutable/nodes/0.DKSa6mGa.js +1 -0
  57. package/ui/dist/_app/immutable/nodes/1.Cnu_jAWf.js +1 -0
  58. package/ui/dist/_app/immutable/nodes/2.Dg1zeC2b.js +1 -0
  59. package/ui/dist/_app/immutable/nodes/3.QCbZIibO.js +1 -0
  60. package/ui/dist/_app/immutable/nodes/4.1bG6DC_9.js +1 -0
  61. package/ui/dist/_app/version.json +1 -0
  62. package/ui/dist/apple-touch-icon.png +0 -0
  63. package/ui/dist/favicon-96x96.png +0 -0
  64. package/ui/dist/favicon.ico +0 -0
  65. package/ui/dist/index.html +52 -0
  66. package/ui/.agents/skills/antcn/SKILL.md +0 -91
  67. package/ui/.agents/skills/antcn/references/analytics.md +0 -78
  68. package/ui/.agents/skills/antcn/references/bridge.md +0 -41
  69. package/ui/.agents/skills/antcn/references/clipboard.md +0 -23
  70. package/ui/.agents/skills/antcn/references/dismissable.md +0 -75
  71. package/ui/.agents/skills/antcn/references/dropdown.md +0 -153
  72. package/ui/.agents/skills/antcn/references/fragments.md +0 -29
  73. package/ui/.agents/skills/antcn/references/fullscreen.md +0 -157
  74. package/ui/.agents/skills/antcn/references/geo.md +0 -27
  75. package/ui/.agents/skills/antcn/references/globals.md +0 -31
  76. package/ui/.agents/skills/antcn/references/grammatical-form.md +0 -69
  77. package/ui/.agents/skills/antcn/references/hints.md +0 -44
  78. package/ui/.agents/skills/antcn/references/hold.md +0 -34
  79. package/ui/.agents/skills/antcn/references/iam.md +0 -117
  80. package/ui/.agents/skills/antcn/references/input-form.md +0 -34
  81. package/ui/.agents/skills/antcn/references/locale.md +0 -66
  82. package/ui/.agents/skills/antcn/references/net.md +0 -33
  83. package/ui/.agents/skills/antcn/references/panel.md +0 -44
  84. package/ui/.agents/skills/antcn/references/passkeys.md +0 -27
  85. package/ui/.agents/skills/antcn/references/payments.md +0 -99
  86. package/ui/.agents/skills/antcn/references/realtime.md +0 -69
  87. package/ui/.agents/skills/antcn/references/scrollable.md +0 -39
  88. package/ui/.agents/skills/antcn/references/selector.md +0 -71
  89. package/ui/.agents/skills/antcn/references/shake.md +0 -36
  90. package/ui/.agents/skills/antcn/references/share.md +0 -28
  91. package/ui/.agents/skills/antcn/references/shell.md +0 -139
  92. package/ui/.agents/skills/antcn/references/stack.md +0 -53
  93. package/ui/.agents/skills/antcn/references/system.md +0 -149
  94. package/ui/.agents/skills/antcn/references/taptap.md +0 -28
  95. package/ui/.agents/skills/antcn/references/tools.md +0 -68
  96. package/ui/.agents/skills/antcn/references/transmission.md +0 -96
  97. package/ui/.agents/skills/shadcn-svelte/SKILL.md +0 -227
  98. package/ui/.agents/skills/shadcn-svelte/agents/openai.yml +0 -5
  99. package/ui/.agents/skills/shadcn-svelte/assets/shadcn-svelte-small.png +0 -0
  100. package/ui/.agents/skills/shadcn-svelte/assets/shadcn-svelte.png +0 -0
  101. package/ui/.agents/skills/shadcn-svelte/cli.md +0 -166
  102. package/ui/.agents/skills/shadcn-svelte/customization.md +0 -213
  103. package/ui/.agents/skills/shadcn-svelte/evals/evals.json +0 -47
  104. package/ui/.agents/skills/shadcn-svelte/rules/composition.md +0 -244
  105. package/ui/.agents/skills/shadcn-svelte/rules/forms.md +0 -234
  106. package/ui/.agents/skills/shadcn-svelte/rules/icons.md +0 -107
  107. package/ui/.agents/skills/shadcn-svelte/rules/styling.md +0 -195
  108. package/ui/.agents/skills/svas/SKILL.md +0 -169
  109. package/ui/.agents/skills/svas/references/patterns.md +0 -95
  110. package/ui/.agents/skills/svintl/SKILL.md +0 -176
  111. package/ui/.claude/settings.json +0 -15
  112. package/ui/.codex/hooks.json +0 -15
  113. package/ui/.cursor/hooks.json +0 -11
  114. package/ui/.env.example +0 -1
  115. package/ui/.prettierrc +0 -9
  116. package/ui/.vscode/extensions.json +0 -7
  117. package/ui/.vscode/settings.json +0 -27
  118. package/ui/AGENTS.md +0 -51
  119. package/ui/architecture.md +0 -390
  120. package/ui/components.json +0 -20
  121. package/ui/eslint.config.js +0 -152
  122. package/ui/features/base.ts +0 -2
  123. package/ui/features/boot.feature +0 -5
  124. package/ui/features/steps/authentication.ts +0 -34
  125. package/ui/features/steps/navigaton.ts +0 -37
  126. package/ui/features/steps/typing.ts +0 -24
  127. package/ui/package-lock.json +0 -8173
  128. package/ui/package.json +0 -76
  129. package/ui/playwright.config.ts +0 -13
  130. package/ui/skills-lock.json +0 -30
  131. package/ui/src/@/configuration/index.ts +0 -1
  132. package/ui/src/@/configuration/svc/create.ts +0 -29
  133. package/ui/src/@/configuration/svc/index.ts +0 -3
  134. package/ui/src/@/configuration/svc/net/Configuration.ts +0 -18
  135. package/ui/src/@/configuration/svc/net/index.ts +0 -2
  136. package/ui/src/@/configuration/svc/net/interface.ts +0 -35
  137. package/ui/src/@/configuration/svc/store.ts +0 -14
  138. package/ui/src/@/configuration/ui/Configurations.svelte +0 -85
  139. package/ui/src/@/configuration/ui/Configurations.ts +0 -5
  140. package/ui/src/@/configuration/ui/Create.svelte +0 -64
  141. package/ui/src/@/configuration/ui/Create.ts +0 -7
  142. package/ui/src/@/configuration/ui/Form.svelte +0 -75
  143. package/ui/src/@/configuration/ui/Form.ts +0 -79
  144. package/ui/src/@/configuration/ui/Row.svelte +0 -44
  145. package/ui/src/@/configuration/ui/Row.ts +0 -9
  146. package/ui/src/@/configuration/ui/Value.svelte +0 -33
  147. package/ui/src/@/configuration/ui/Value.ts +0 -6
  148. package/ui/src/@/configuration/ui/index.ts +0 -9
  149. package/ui/src/@/configuration/ui/intl/built.js +0 -38
  150. package/ui/src/@/configuration/ui/intl/context.yaml +0 -51
  151. package/ui/src/@/configuration/ui/intl/en-US.yaml +0 -21
  152. package/ui/src/@/configuration/ui/intl/index.ts +0 -9
  153. package/ui/src/@/configuration/ui/intl/types.ts +0 -31
  154. package/ui/src/@/configuration/ui/read.test.ts +0 -75
  155. package/ui/src/@/configuration/ui/read.ts +0 -102
  156. package/ui/src/@/configuration/ui/ui.test.ts +0 -69
  157. package/ui/src/@/configuration/ui/ui.ts +0 -115
  158. package/ui/src/@/iam/index.ts +0 -1
  159. package/ui/src/@/iam/rc.ts +0 -22
  160. package/ui/src/@/iam/svc/authenticated.ts +0 -17
  161. package/ui/src/@/iam/svc/basic.ts +0 -23
  162. package/ui/src/@/iam/svc/index.ts +0 -10
  163. package/ui/src/@/iam/svc/logout.ts +0 -5
  164. package/ui/src/@/iam/svc/named.ts +0 -16
  165. package/ui/src/@/iam/svc/net/Echo.ts +0 -9
  166. package/ui/src/@/iam/svc/net/basic/index.ts +0 -1
  167. package/ui/src/@/iam/svc/net/basic/interface.ts +0 -15
  168. package/ui/src/@/iam/svc/net/federation/index.ts +0 -1
  169. package/ui/src/@/iam/svc/net/federation/interface.ts +0 -12
  170. package/ui/src/@/iam/svc/net/index.ts +0 -6
  171. package/ui/src/@/iam/svc/net/interface.ts +0 -17
  172. package/ui/src/@/iam/svc/net/otp/index.ts +0 -1
  173. package/ui/src/@/iam/svc/net/otp/interface.ts +0 -14
  174. package/ui/src/@/iam/svc/net/passkeys/index.ts +0 -1
  175. package/ui/src/@/iam/svc/net/passkeys/interface.ts +0 -12
  176. package/ui/src/@/iam/svc/oidc/apple.ts +0 -47
  177. package/ui/src/@/iam/svc/oidc/authenticate.ts +0 -62
  178. package/ui/src/@/iam/svc/oidc/google.ts +0 -45
  179. package/ui/src/@/iam/svc/oidc/hello.ts +0 -82
  180. package/ui/src/@/iam/svc/oidc/index.ts +0 -3
  181. package/ui/src/@/iam/svc/oidc/nonce.ts +0 -5
  182. package/ui/src/@/iam/svc/oidc/providers.ts +0 -28
  183. package/ui/src/@/iam/svc/oidc/standard.ts +0 -28
  184. package/ui/src/@/iam/svc/otp.ts +0 -18
  185. package/ui/src/@/iam/svc/passkeys/create.ts +0 -20
  186. package/ui/src/@/iam/svc/passkeys/index.ts +0 -2
  187. package/ui/src/@/iam/svc/passkeys/login.ts +0 -21
  188. package/ui/src/@/iam/svc/store.ts +0 -36
  189. package/ui/src/@/iam/svc/sync.ts +0 -18
  190. package/ui/src/@/iam/svc/transfer.ts +0 -11
  191. package/ui/src/@/iam/svc/update.ts +0 -8
  192. package/ui/src/@/iam/ui/AccountLike.ts +0 -4
  193. package/ui/src/@/iam/ui/Authenticated.svelte +0 -37
  194. package/ui/src/@/iam/ui/Authenticated.ts +0 -10
  195. package/ui/src/@/iam/ui/Authentication.svelte +0 -50
  196. package/ui/src/@/iam/ui/Authentication.ts +0 -9
  197. package/ui/src/@/iam/ui/Authorized.svelte +0 -32
  198. package/ui/src/@/iam/ui/Authorized.ts +0 -65
  199. package/ui/src/@/iam/ui/Card.svelte +0 -14
  200. package/ui/src/@/iam/ui/Card.ts +0 -7
  201. package/ui/src/@/iam/ui/Refresh.svelte +0 -39
  202. package/ui/src/@/iam/ui/credentials/Credentials.svelte +0 -26
  203. package/ui/src/@/iam/ui/credentials/Credentials.ts +0 -5
  204. package/ui/src/@/iam/ui/credentials/Provider.svelte +0 -24
  205. package/ui/src/@/iam/ui/credentials/Provider.ts +0 -5
  206. package/ui/src/@/iam/ui/credentials/index.ts +0 -1
  207. package/ui/src/@/iam/ui/credentials/passkeys/Key.svelte +0 -42
  208. package/ui/src/@/iam/ui/credentials/passkeys/Key.ts +0 -29
  209. package/ui/src/@/iam/ui/credentials/passkeys/Manager.svelte +0 -83
  210. package/ui/src/@/iam/ui/credentials/passkeys/Manager.ts +0 -5
  211. package/ui/src/@/iam/ui/credentials/passkeys/Passkeys.svelte +0 -39
  212. package/ui/src/@/iam/ui/credentials/passkeys/Summary.svelte +0 -27
  213. package/ui/src/@/iam/ui/credentials/passkeys/Summary.ts +0 -5
  214. package/ui/src/@/iam/ui/credentials/passkeys/index.ts +0 -1
  215. package/ui/src/@/iam/ui/credentials/providers.ts +0 -15
  216. package/ui/src/@/iam/ui/credentials/transfer/Qr.svelte +0 -24
  217. package/ui/src/@/iam/ui/credentials/transfer/Qr.ts +0 -3
  218. package/ui/src/@/iam/ui/credentials/transfer/Transfer.svelte +0 -48
  219. package/ui/src/@/iam/ui/credentials/transfer/Transfer.ts +0 -5
  220. package/ui/src/@/iam/ui/credentials/transfer/index.ts +0 -1
  221. package/ui/src/@/iam/ui/index.ts +0 -3
  222. package/ui/src/@/iam/ui/intl/built.js +0 -79
  223. package/ui/src/@/iam/ui/intl/context.yaml +0 -91
  224. package/ui/src/@/iam/ui/intl/en-US.yaml +0 -64
  225. package/ui/src/@/iam/ui/intl/index.ts +0 -10
  226. package/ui/src/@/iam/ui/intl/types.ts +0 -70
  227. package/ui/src/@/iam/ui/oidc/Authentication.svelte +0 -16
  228. package/ui/src/@/iam/ui/oidc/Authentication.ts +0 -5
  229. package/ui/src/@/iam/ui/oidc/Button.svelte +0 -36
  230. package/ui/src/@/iam/ui/oidc/Button.ts +0 -11
  231. package/ui/src/@/iam/ui/oidc/Refresh.svelte +0 -16
  232. package/ui/src/@/iam/ui/oidc/icons/Apple.svelte +0 -19
  233. package/ui/src/@/iam/ui/oidc/icons/Google.svelte +0 -31
  234. package/ui/src/@/iam/ui/oidc/icons/index.ts +0 -11
  235. package/ui/src/@/iam/ui/oidc/index.ts +0 -2
  236. package/ui/src/@/iam/ui/passkey/Authentication.svelte +0 -64
  237. package/ui/src/@/iam/ui/passkey/Authentication.ts +0 -8
  238. package/ui/src/@/iam/ui/passkey/Create.svelte +0 -53
  239. package/ui/src/@/iam/ui/passkey/Create.ts +0 -7
  240. package/ui/src/@/iam/ui/passkey/Login.svelte +0 -29
  241. package/ui/src/@/iam/ui/passkey/Refresh.svelte +0 -29
  242. package/ui/src/@/iam/ui/passkey/index.ts +0 -2
  243. package/ui/src/@/iam/ui/password/Authentication.svelte +0 -19
  244. package/ui/src/@/iam/ui/password/Authentication.ts +0 -8
  245. package/ui/src/@/iam/ui/password/Form.svelte +0 -151
  246. package/ui/src/@/iam/ui/password/Form.ts +0 -6
  247. package/ui/src/@/iam/ui/password/Password.svelte +0 -39
  248. package/ui/src/@/iam/ui/password/Password.ts +0 -6
  249. package/ui/src/@/iam/ui/password/Refresh.svelte +0 -5
  250. package/ui/src/@/iam/ui/password/index.ts +0 -2
  251. package/ui/src/@/net/index.ts +0 -1
  252. package/ui/src/@/net/svc/index.ts +0 -3
  253. package/ui/src/@/net/svc/origin.ts +0 -8
  254. package/ui/src/@/net/svc/query.test.ts +0 -45
  255. package/ui/src/@/net/svc/query.ts +0 -25
  256. package/ui/src/@/passkeys/index.ts +0 -1
  257. package/ui/src/@/passkeys/svc/add.ts +0 -15
  258. package/ui/src/@/passkeys/svc/create.ts +0 -58
  259. package/ui/src/@/passkeys/svc/credentials/convert.ts +0 -32
  260. package/ui/src/@/passkeys/svc/credentials/create.ts +0 -34
  261. package/ui/src/@/passkeys/svc/credentials/get.ts +0 -14
  262. package/ui/src/@/passkeys/svc/credentials/index.ts +0 -3
  263. package/ui/src/@/passkeys/svc/credentials/key.ts +0 -10
  264. package/ui/src/@/passkeys/svc/get.ts +0 -10
  265. package/ui/src/@/passkeys/svc/index.ts +0 -6
  266. package/ui/src/@/passkeys/svc/net/CreationResponse.ts +0 -15
  267. package/ui/src/@/passkeys/svc/net/Passkey.ts +0 -8
  268. package/ui/src/@/passkeys/svc/net/RequestResponse.ts +0 -12
  269. package/ui/src/@/passkeys/svc/net/challenges/Options.ts +0 -21
  270. package/ui/src/@/passkeys/svc/net/challenges/index.ts +0 -2
  271. package/ui/src/@/passkeys/svc/net/challenges/interface.ts +0 -16
  272. package/ui/src/@/passkeys/svc/net/index.ts +0 -4
  273. package/ui/src/@/passkeys/svc/net/interface.ts +0 -29
  274. package/ui/src/@/passkeys/svc/remove.ts +0 -13
  275. package/ui/src/@/passkeys/svc/request.ts +0 -50
  276. package/ui/src/@/passkeys/svc/store.ts +0 -13
  277. package/ui/src/@/passkeys/svc/supported.ts +0 -1
  278. package/ui/src/@/passkeys/ui/aaguid.json +0 -150
  279. package/ui/src/@/realtime/events.ts +0 -1
  280. package/ui/src/@/realtime/index.ts +0 -1
  281. package/ui/src/@/realtime/rc.ts +0 -13
  282. package/ui/src/@/realtime/svc/connect.ts +0 -67
  283. package/ui/src/@/realtime/svc/events.ts +0 -17
  284. package/ui/src/@/realtime/svc/index.ts +0 -5
  285. package/ui/src/@/realtime/svc/net/Message.ts +0 -6
  286. package/ui/src/@/realtime/svc/net/index.ts +0 -2
  287. package/ui/src/@/realtime/svc/net/interface.ts +0 -13
  288. package/ui/src/@/realtime/svc/reset.ts +0 -5
  289. package/ui/src/@/realtime/svc/status.ts +0 -12
  290. package/ui/src/@/realtime/svc/store.ts +0 -30
  291. package/ui/src/@/realtime/svc/time.ts +0 -15
  292. package/ui/src/app.d.ts +0 -20
  293. package/ui/src/app.html +0 -13
  294. package/ui/src/config/index.ts +0 -70
  295. package/ui/src/lib/assets/favicon.svg +0 -1
  296. package/ui/src/lib/components/clipboard/Clipboard.svelte +0 -63
  297. package/ui/src/lib/components/clipboard/Clipboard.ts +0 -12
  298. package/ui/src/lib/components/clipboard/index.ts +0 -1
  299. package/ui/src/lib/components/dismissable/Dismissable.svelte +0 -81
  300. package/ui/src/lib/components/dismissable/Dismissable.ts +0 -7
  301. package/ui/src/lib/components/dismissable/index.ts +0 -1
  302. package/ui/src/lib/components/dropdown/Back.svelte +0 -14
  303. package/ui/src/lib/components/dropdown/Back.ts +0 -3
  304. package/ui/src/lib/components/dropdown/Content.svelte +0 -76
  305. package/ui/src/lib/components/dropdown/Content.ts +0 -13
  306. package/ui/src/lib/components/dropdown/Context.ts +0 -18
  307. package/ui/src/lib/components/dropdown/Group.svelte +0 -24
  308. package/ui/src/lib/components/dropdown/Group.ts +0 -8
  309. package/ui/src/lib/components/dropdown/GroupContext.ts +0 -15
  310. package/ui/src/lib/components/dropdown/Item.svelte +0 -31
  311. package/ui/src/lib/components/dropdown/Item.ts +0 -5
  312. package/ui/src/lib/components/dropdown/Layer.svelte +0 -11
  313. package/ui/src/lib/components/dropdown/Layer.ts +0 -7
  314. package/ui/src/lib/components/dropdown/Root.svelte +0 -88
  315. package/ui/src/lib/components/dropdown/Root.ts +0 -6
  316. package/ui/src/lib/components/dropdown/Separator.svelte +0 -13
  317. package/ui/src/lib/components/dropdown/Separator.ts +0 -5
  318. package/ui/src/lib/components/dropdown/Trigger.svelte +0 -33
  319. package/ui/src/lib/components/dropdown/Trigger.ts +0 -5
  320. package/ui/src/lib/components/dropdown/index.ts +0 -8
  321. package/ui/src/lib/components/fullscreen/Fullscreen.svelte +0 -97
  322. package/ui/src/lib/components/fullscreen/Fullscreen.ts +0 -18
  323. package/ui/src/lib/components/fullscreen/Overlay.svelte +0 -15
  324. package/ui/src/lib/components/fullscreen/Overlay.ts +0 -7
  325. package/ui/src/lib/components/fullscreen/index.ts +0 -2
  326. package/ui/src/lib/components/hold/Hold.svelte +0 -133
  327. package/ui/src/lib/components/hold/Hold.ts +0 -23
  328. package/ui/src/lib/components/hold/index.ts +0 -1
  329. package/ui/src/lib/components/scrollable/Scrollable.svelte +0 -49
  330. package/ui/src/lib/components/scrollable/Scrollable.ts +0 -117
  331. package/ui/src/lib/components/scrollable/index.ts +0 -2
  332. package/ui/src/lib/components/shake/Shake.svelte +0 -62
  333. package/ui/src/lib/components/shake/Shake.ts +0 -7
  334. package/ui/src/lib/components/shake/index.ts +0 -1
  335. package/ui/src/lib/components/share/Share.svelte +0 -58
  336. package/ui/src/lib/components/share/Share.ts +0 -9
  337. package/ui/src/lib/components/share/index.ts +0 -1
  338. package/ui/src/lib/components/shell/Attention.svelte +0 -11
  339. package/ui/src/lib/components/shell/Attention.ts +0 -6
  340. package/ui/src/lib/components/shell/Header.svelte +0 -18
  341. package/ui/src/lib/components/shell/Header.ts +0 -7
  342. package/ui/src/lib/components/shell/Screen.svelte +0 -28
  343. package/ui/src/lib/components/shell/Screen.ts +0 -11
  344. package/ui/src/lib/components/shell/Sticky.svelte +0 -23
  345. package/ui/src/lib/components/shell/Sticky.ts +0 -8
  346. package/ui/src/lib/components/shell/Underlay.svelte +0 -21
  347. package/ui/src/lib/components/shell/Underlay.ts +0 -6
  348. package/ui/src/lib/components/shell/index.ts +0 -6
  349. package/ui/src/lib/components/shell/nav/Actions.svelte +0 -31
  350. package/ui/src/lib/components/shell/nav/Actions.ts +0 -16
  351. package/ui/src/lib/components/shell/nav/Back.svelte +0 -20
  352. package/ui/src/lib/components/shell/nav/Back.ts +0 -9
  353. package/ui/src/lib/components/shell/nav/Bar.svelte +0 -24
  354. package/ui/src/lib/components/shell/nav/Bar.ts +0 -3
  355. package/ui/src/lib/components/shell/nav/Button.svelte +0 -64
  356. package/ui/src/lib/components/shell/nav/Button.ts +0 -7
  357. package/ui/src/lib/components/shell/nav/Nav.svelte +0 -62
  358. package/ui/src/lib/components/shell/nav/Nav.ts +0 -35
  359. package/ui/src/lib/components/shell/nav/Return.svelte +0 -29
  360. package/ui/src/lib/components/shell/nav/Return.ts +0 -15
  361. package/ui/src/lib/components/shell/nav/Sections.svelte +0 -58
  362. package/ui/src/lib/components/shell/nav/Sections.ts +0 -6
  363. package/ui/src/lib/components/shell/nav/Toolbar.svelte +0 -73
  364. package/ui/src/lib/components/shell/nav/Toolbar.ts +0 -3
  365. package/ui/src/lib/components/shell/nav/history.ts +0 -36
  366. package/ui/src/lib/components/shell/nav/index.ts +0 -5
  367. package/ui/src/lib/components/shell/nav/store.ts +0 -24
  368. package/ui/src/lib/components/ui/alert/alert-action.svelte +0 -20
  369. package/ui/src/lib/components/ui/alert/alert-description.svelte +0 -23
  370. package/ui/src/lib/components/ui/alert/alert-title.svelte +0 -23
  371. package/ui/src/lib/components/ui/alert/alert.svelte +0 -43
  372. package/ui/src/lib/components/ui/alert/index.ts +0 -17
  373. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte +0 -27
  374. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte +0 -27
  375. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte +0 -32
  376. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte +0 -17
  377. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte +0 -23
  378. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte +0 -20
  379. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-media.svelte +0 -20
  380. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte +0 -17
  381. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte +0 -7
  382. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte +0 -17
  383. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-trigger.svelte +0 -7
  384. package/ui/src/lib/components/ui/alert-dialog/alert-dialog.svelte +0 -7
  385. package/ui/src/lib/components/ui/alert-dialog/index.ts +0 -40
  386. package/ui/src/lib/components/ui/badge/badge.svelte +0 -49
  387. package/ui/src/lib/components/ui/badge/index.ts +0 -2
  388. package/ui/src/lib/components/ui/button/button.svelte +0 -82
  389. package/ui/src/lib/components/ui/button/index.ts +0 -17
  390. package/ui/src/lib/components/ui/button-group/button-group-separator.svelte +0 -23
  391. package/ui/src/lib/components/ui/button-group/button-group-text.svelte +0 -28
  392. package/ui/src/lib/components/ui/button-group/button-group.svelte +0 -46
  393. package/ui/src/lib/components/ui/button-group/index.ts +0 -15
  394. package/ui/src/lib/components/ui/card/card-action.svelte +0 -23
  395. package/ui/src/lib/components/ui/card/card-content.svelte +0 -20
  396. package/ui/src/lib/components/ui/card/card-description.svelte +0 -20
  397. package/ui/src/lib/components/ui/card/card-footer.svelte +0 -20
  398. package/ui/src/lib/components/ui/card/card-header.svelte +0 -23
  399. package/ui/src/lib/components/ui/card/card-title.svelte +0 -20
  400. package/ui/src/lib/components/ui/card/card.svelte +0 -22
  401. package/ui/src/lib/components/ui/card/index.ts +0 -25
  402. package/ui/src/lib/components/ui/checkbox/checkbox.svelte +0 -39
  403. package/ui/src/lib/components/ui/checkbox/index.ts +0 -6
  404. package/ui/src/lib/components/ui/collapsible/collapsible-content.svelte +0 -7
  405. package/ui/src/lib/components/ui/collapsible/collapsible-trigger.svelte +0 -7
  406. package/ui/src/lib/components/ui/collapsible/collapsible.svelte +0 -20
  407. package/ui/src/lib/components/ui/collapsible/index.ts +0 -13
  408. package/ui/src/lib/components/ui/input/index.ts +0 -7
  409. package/ui/src/lib/components/ui/input/input.svelte +0 -48
  410. package/ui/src/lib/components/ui/input-otp/index.ts +0 -15
  411. package/ui/src/lib/components/ui/input-otp/input-otp-group.svelte +0 -20
  412. package/ui/src/lib/components/ui/input-otp/input-otp-separator.svelte +0 -27
  413. package/ui/src/lib/components/ui/input-otp/input-otp-slot.svelte +0 -31
  414. package/ui/src/lib/components/ui/input-otp/input-otp.svelte +0 -23
  415. package/ui/src/lib/components/ui/item/index.ts +0 -34
  416. package/ui/src/lib/components/ui/item/item-actions.svelte +0 -20
  417. package/ui/src/lib/components/ui/item/item-content.svelte +0 -23
  418. package/ui/src/lib/components/ui/item/item-description.svelte +0 -23
  419. package/ui/src/lib/components/ui/item/item-footer.svelte +0 -20
  420. package/ui/src/lib/components/ui/item/item-group.svelte +0 -21
  421. package/ui/src/lib/components/ui/item/item-header.svelte +0 -20
  422. package/ui/src/lib/components/ui/item/item-media.svelte +0 -42
  423. package/ui/src/lib/components/ui/item/item-separator.svelte +0 -19
  424. package/ui/src/lib/components/ui/item/item-title.svelte +0 -20
  425. package/ui/src/lib/components/ui/item/item.svelte +0 -61
  426. package/ui/src/lib/components/ui/kbd/index.ts +0 -10
  427. package/ui/src/lib/components/ui/kbd/kbd-group.svelte +0 -20
  428. package/ui/src/lib/components/ui/kbd/kbd.svelte +0 -23
  429. package/ui/src/lib/components/ui/label/index.ts +0 -7
  430. package/ui/src/lib/components/ui/label/label.svelte +0 -20
  431. package/ui/src/lib/components/ui/progress/index.ts +0 -7
  432. package/ui/src/lib/components/ui/progress/progress.svelte +0 -27
  433. package/ui/src/lib/components/ui/select/index.ts +0 -37
  434. package/ui/src/lib/components/ui/select/select-content.svelte +0 -45
  435. package/ui/src/lib/components/ui/select/select-group-heading.svelte +0 -21
  436. package/ui/src/lib/components/ui/select/select-group.svelte +0 -17
  437. package/ui/src/lib/components/ui/select/select-item.svelte +0 -40
  438. package/ui/src/lib/components/ui/select/select-label.svelte +0 -20
  439. package/ui/src/lib/components/ui/select/select-portal.svelte +0 -7
  440. package/ui/src/lib/components/ui/select/select-scroll-down-button.svelte +0 -20
  441. package/ui/src/lib/components/ui/select/select-scroll-up-button.svelte +0 -20
  442. package/ui/src/lib/components/ui/select/select-separator.svelte +0 -18
  443. package/ui/src/lib/components/ui/select/select-trigger.svelte +0 -29
  444. package/ui/src/lib/components/ui/select/select.svelte +0 -11
  445. package/ui/src/lib/components/ui/separator/index.ts +0 -7
  446. package/ui/src/lib/components/ui/separator/separator.svelte +0 -23
  447. package/ui/src/lib/components/ui/spinner/index.ts +0 -1
  448. package/ui/src/lib/components/ui/spinner/spinner.svelte +0 -18
  449. package/ui/src/lib/components/ui/tabs/index.ts +0 -18
  450. package/ui/src/lib/components/ui/tabs/tabs-content.svelte +0 -17
  451. package/ui/src/lib/components/ui/tabs/tabs-list.svelte +0 -40
  452. package/ui/src/lib/components/ui/tabs/tabs-trigger.svelte +0 -23
  453. package/ui/src/lib/components/ui/tabs/tabs.svelte +0 -19
  454. package/ui/src/lib/components/ui/textarea/index.ts +0 -7
  455. package/ui/src/lib/components/ui/textarea/textarea.svelte +0 -22
  456. package/ui/src/lib/intl/bcp.ts +0 -25
  457. package/ui/src/lib/intl/built.js +0 -18
  458. package/ui/src/lib/intl/context.yaml +0 -18
  459. package/ui/src/lib/intl/en-US.yaml +0 -6
  460. package/ui/src/lib/intl/index.ts +0 -65
  461. package/ui/src/lib/intl/types.ts +0 -19
  462. package/ui/src/lib/tools/ago.ts +0 -10
  463. package/ui/src/lib/tools/assert.ts +0 -3
  464. package/ui/src/lib/tools/cap.ts +0 -5
  465. package/ui/src/lib/tools/clicks.ts +0 -25
  466. package/ui/src/lib/tools/contextmenu.ts +0 -19
  467. package/ui/src/lib/tools/convert.ts +0 -32
  468. package/ui/src/lib/tools/currency.test.ts +0 -10
  469. package/ui/src/lib/tools/currency.ts +0 -55
  470. package/ui/src/lib/tools/date.test.ts +0 -21
  471. package/ui/src/lib/tools/date.ts +0 -35
  472. package/ui/src/lib/tools/delay.ts +0 -7
  473. package/ui/src/lib/tools/image.ts +0 -39
  474. package/ui/src/lib/tools/index.ts +0 -20
  475. package/ui/src/lib/tools/location.ts +0 -41
  476. package/ui/src/lib/tools/metronome.ts +0 -11
  477. package/ui/src/lib/tools/mq.ts +0 -84
  478. package/ui/src/lib/tools/onsubmit.ts +0 -21
  479. package/ui/src/lib/tools/random.ts +0 -15
  480. package/ui/src/lib/tools/search.ts +0 -25
  481. package/ui/src/lib/tools/timeout.ts +0 -26
  482. package/ui/src/lib/tools/transition.ts +0 -207
  483. package/ui/src/lib/tools/types.ts +0 -3
  484. package/ui/src/lib/tools/uuid.test.ts +0 -28
  485. package/ui/src/lib/tools/uuid.ts +0 -9
  486. package/ui/src/lib/typeset.css +0 -502
  487. package/ui/src/lib/utils.ts +0 -12
  488. package/ui/src/routes/(private)/+layout.svelte +0 -112
  489. package/ui/src/routes/(private)/+page.svelte +0 -7
  490. package/ui/src/routes/(private)/[component]/+page.svelte +0 -77
  491. package/ui/src/routes/+layout.svelte +0 -25
  492. package/ui/src/routes/+layout.ts +0 -14
  493. package/ui/src/routes/layout.css +0 -232
  494. package/ui/svelte.config.js +0 -36
  495. package/ui/tools/feat.js +0 -43
  496. package/ui/tools/hooks/README.md +0 -13
  497. package/ui/tools/hooks/guard-intl.sh +0 -40
  498. package/ui/tools/shad.js +0 -7
  499. package/ui/tsconfig.json +0 -20
  500. package/ui/vite.config.ts +0 -8
  501. /package/ui/{static → dist}/robots.txt +0 -0
@@ -1,244 +0,0 @@
1
- # Component Composition
2
-
3
- ## Contents
4
-
5
- - Items always inside their Group component
6
- - Callouts use Alert
7
- - Empty states use Empty component
8
- - Toast notifications use svelte-sonner
9
- - Choosing between overlay components
10
- - Dialog, Sheet, and Drawer always need a Title
11
- - Card structure
12
- - Button has no isPending or isLoading prop
13
- - Tabs.Trigger must be inside Tabs.List
14
- - Avatar always needs Avatar.Fallback
15
- - Use Separator instead of raw hr or border divs
16
- - Use Skeleton for loading placeholders
17
- - Use Badge instead of custom styled spans
18
-
19
- ---
20
-
21
- ## Items always inside their Group component
22
-
23
- Never render items directly inside the content container.
24
-
25
- **Incorrect:**
26
-
27
- ```svelte
28
- <script lang="ts">
29
- import * as Select from "$lib/components/ui/select";
30
- </script>
31
-
32
- <Select.Content>
33
- <Select.Item value="apple">Apple</Select.Item>
34
- <Select.Item value="banana">Banana</Select.Item>
35
- </Select.Content>
36
- ```
37
-
38
- **Correct:**
39
-
40
- ```svelte
41
- <script lang="ts">
42
- import * as Select from "$lib/components/ui/select";
43
- </script>
44
-
45
- <Select.Content>
46
- <Select.Group>
47
- <Select.Item value="apple">Apple</Select.Item>
48
- <Select.Item value="banana">Banana</Select.Item>
49
- </Select.Group>
50
- </Select.Content>
51
- ```
52
-
53
- This applies to all group-based components:
54
-
55
- | Item | Group |
56
- | ------------------------------------------------------------- | -------------------- |
57
- | `Select.Item`, `Select.Label` | `Select.Group` |
58
- | `DropdownMenu.Item`, `DropdownMenu.Label`, `DropdownMenu.Sub` | `DropdownMenu.Group` |
59
- | `Menubar.Item` | `Menubar.Group` |
60
- | `ContextMenu.Item` | `ContextMenu.Group` |
61
- | `Command.Item` | `Command.Group` |
62
-
63
- ---
64
-
65
- ## Callouts use Alert
66
-
67
- ```svelte
68
- <script lang="ts">
69
- import * as Alert from "$lib/components/ui/alert";
70
- </script>
71
-
72
- <Alert.Root>
73
- <Alert.Title>Warning</Alert.Title>
74
- <Alert.Description>Something needs attention.</Alert.Description>
75
- </Alert.Root>
76
- ```
77
-
78
- ---
79
-
80
- ## Empty states use Empty component
81
-
82
- ```svelte
83
- <script lang="ts">
84
- import * as Empty from "$lib/components/ui/empty";
85
- import { Button } from "$lib/components/ui/button";
86
- import FolderIcon from "@lucide/svelte/icons/folder";
87
- </script>
88
-
89
- <Empty.Root>
90
- <Empty.Header>
91
- <Empty.Media variant="icon"><FolderIcon /></Empty.Media>
92
- <Empty.Title>No projects yet</Empty.Title>
93
- <Empty.Description
94
- >Get started by creating a new project.</Empty.Description
95
- >
96
- </Empty.Header>
97
- <Empty.Content>
98
- <Button>Create Project</Button>
99
- </Empty.Content>
100
- </Empty.Root>
101
- ```
102
-
103
- ---
104
-
105
- ## Toast notifications use svelte-sonner
106
-
107
- ```svelte
108
- <script lang="ts">
109
- import { toast } from "svelte-sonner";
110
- </script>
111
- ```
112
-
113
- ```ts
114
- toast.success("Changes saved.");
115
- toast.error("Something went wrong.");
116
- toast("File deleted.", {
117
- action: { label: "Undo", onClick: () => undoDelete() },
118
- });
119
- ```
120
-
121
- Mount the `Toaster` from your UI folder once in the app layout (see [Sonner](https://shadcn-svelte.com/docs/components/sonner)).
122
-
123
- ---
124
-
125
- ## Choosing between overlay components
126
-
127
- | Use case | Component |
128
- | ---------------------------------- | ------------- |
129
- | Focused task that requires input | `Dialog` |
130
- | Destructive action confirmation | `AlertDialog` |
131
- | Side panel with details or filters | `Sheet` |
132
- | Mobile-first bottom panel | `Drawer` |
133
- | Quick info on hover | `HoverCard` |
134
- | Small contextual content on click | `Popover` |
135
-
136
- ---
137
-
138
- ## Dialog, Sheet, and Drawer always need a Title
139
-
140
- `Dialog.Title`, `Sheet.Title`, `Drawer.Title` are required for accessibility. Use `class="sr-only"` if visually hidden.
141
-
142
- ```svelte
143
- <script lang="ts">
144
- import * as Dialog from "$lib/components/ui/dialog";
145
- </script>
146
-
147
- <Dialog.Content>
148
- <Dialog.Header>
149
- <Dialog.Title>Edit Profile</Dialog.Title>
150
- <Dialog.Description>Update your profile.</Dialog.Description>
151
- </Dialog.Header>
152
- ...
153
- </Dialog.Content>
154
- ```
155
-
156
- ---
157
-
158
- ## Card structure
159
-
160
- Use full composition — don't dump everything into `Card.Content`:
161
-
162
- ```svelte
163
- <script lang="ts">
164
- import * as Card from "$lib/components/ui/card";
165
- import { Button } from "$lib/components/ui/button";
166
- </script>
167
-
168
- <Card.Root>
169
- <Card.Header>
170
- <Card.Title>Team Members</Card.Title>
171
- <Card.Description>Manage your team.</Card.Description>
172
- </Card.Header>
173
- <Card.Content>...</Card.Content>
174
- <Card.Footer>
175
- <Button>Invite</Button>
176
- </Card.Footer>
177
- </Card.Root>
178
- ```
179
-
180
- ---
181
-
182
- ## Button has no isPending or isLoading prop
183
-
184
- Compose with `Spinner` inside `Button` + `disabled`:
185
-
186
- ```svelte
187
- <script lang="ts">
188
- import { Button } from "$lib/components/ui/button";
189
- import { Spinner } from "$lib/components/ui/spinner";
190
- </script>
191
-
192
- <Button disabled>
193
- <Spinner data-icon="inline-start" />
194
- Saving...
195
- </Button>
196
- ```
197
-
198
- ---
199
-
200
- ## Tabs.Trigger must be inside Tabs.List
201
-
202
- Never render `Tabs.Trigger` directly inside `Tabs.Root` — always wrap in `Tabs.List`:
203
-
204
- ```svelte
205
- <script lang="ts">
206
- import * as Tabs from "$lib/components/ui/tabs";
207
- let tab = $state("account");
208
- </script>
209
-
210
- <Tabs.Root bind:value={tab}>
211
- <Tabs.List>
212
- <Tabs.Trigger value="account">Account</Tabs.Trigger>
213
- <Tabs.Trigger value="password">Password</Tabs.Trigger>
214
- </Tabs.List>
215
- <Tabs.Content value="account">...</Tabs.Content>
216
- </Tabs.Root>
217
- ```
218
-
219
- ---
220
-
221
- ## Avatar always needs Avatar.Fallback
222
-
223
- Always include `Avatar.Fallback` for when the image fails to load:
224
-
225
- ```svelte
226
- <script lang="ts">
227
- import * as Avatar from "$lib/components/ui/avatar";
228
- </script>
229
-
230
- <Avatar.Root>
231
- <Avatar.Image src="/avatar.png" alt="User" />
232
- <Avatar.Fallback>JD</Avatar.Fallback>
233
- </Avatar.Root>
234
- ```
235
-
236
- ---
237
-
238
- ## Use existing components instead of custom markup
239
-
240
- | Instead of | Use |
241
- | ---------------------------------------------- | ------------------------------------------------------------------------------------------- |
242
- | `<hr>` or `<div class="border-t">` | `<Separator />` (`import { Separator } from "$lib/components/ui/separator"`) |
243
- | `<div class="animate-pulse">` with styled divs | `<Skeleton class="h-4 w-3/4" />` (`import { Skeleton } from "$lib/components/ui/skeleton"`) |
244
- | `<span class="rounded-full bg-green-100 ...">` | `<Badge variant="secondary">` (`import { Badge } from "$lib/components/ui/badge"`) |
@@ -1,234 +0,0 @@
1
- # Forms & Inputs
2
-
3
- ## Contents
4
-
5
- - Forms use Field.FieldGroup + Field.Field
6
- - InputGroup requires InputGroup.Input/InputGroup.Textarea
7
- - Buttons inside inputs use InputGroup.Root + InputGroup.Addon
8
- - Option sets (2–7 choices) use ToggleGroup.Root + ToggleGroup.Item
9
- - Field.FieldSet + Field.FieldLegend for grouping related fields
10
- - Field validation and disabled states
11
-
12
- ---
13
-
14
- ## Forms use Field.FieldGroup + Field.Field
15
-
16
- Always use `Field.FieldGroup` + `Field.Field` — never raw `div` with `space-y-*`:
17
-
18
- ```svelte
19
- <script lang="ts">
20
- import * as Field from "$lib/components/ui/field";
21
- import { Input } from "$lib/components/ui/input";
22
- </script>
23
-
24
- <Field.FieldGroup>
25
- <Field.Field>
26
- <Field.FieldLabel for="email">Email</Field.FieldLabel>
27
- <Input id="email" type="email" />
28
- </Field.Field>
29
- <Field.Field>
30
- <Field.FieldLabel for="password">Password</Field.FieldLabel>
31
- <Input id="password" type="password" />
32
- </Field.Field>
33
- </Field.FieldGroup>
34
- ```
35
-
36
- Use `Field` with `orientation="horizontal"` for settings pages. Use `Field.FieldLabel` with `class="sr-only"` for visually hidden labels.
37
-
38
- **Choosing form controls:**
39
-
40
- - Simple text input → `Input`
41
- - Dropdown with predefined options → `Select`
42
- - Searchable dropdown → `Combobox`
43
- - Native HTML select (no JS) → `native-select`
44
- - Boolean toggle → `Switch` (for settings) or `Checkbox` (for forms)
45
- - Single choice from few options → `RadioGroup`
46
- - Toggle between 2–5 options → `ToggleGroup.Root` + `ToggleGroup.Item`
47
- - OTP/verification code → `InputOTP`
48
- - Multi-line text → `Textarea`
49
-
50
- ---
51
-
52
- ## InputGroup requires InputGroup.Input/InputGroup.Textarea
53
-
54
- Never use raw `Input` or `Textarea` inside an `InputGroup.Root`.
55
-
56
- **Incorrect:**
57
-
58
- ```svelte
59
- <script lang="ts">
60
- import * as InputGroup from "$lib/components/ui/input-group";
61
- import { Input } from "$lib/components/ui/input";
62
- </script>
63
-
64
- <InputGroup.Root>
65
- <Input placeholder="Search..." />
66
- </InputGroup.Root>
67
- ```
68
-
69
- **Correct:**
70
-
71
- ```svelte
72
- <script lang="ts">
73
- import * as InputGroup from "$lib/components/ui/input-group";
74
- </script>
75
-
76
- <InputGroup.Root>
77
- <InputGroup.Input placeholder="Search..." />
78
- </InputGroup.Root>
79
- ```
80
-
81
- ---
82
-
83
- ## Buttons inside inputs use InputGroup.Root + InputGroup.Addon
84
-
85
- Never place a `Button` directly inside or adjacent to an `Input` with custom positioning.
86
-
87
- **Incorrect:**
88
-
89
- ```svelte
90
- <script lang="ts">
91
- import { Input } from "$lib/components/ui/input";
92
- import { Button } from "$lib/components/ui/button";
93
- import SearchIcon from "@lucide/svelte/icons/search";
94
- </script>
95
-
96
- <div class="relative">
97
- <Input placeholder="Search..." class="pr-10" />
98
- <Button class="absolute top-0 right-0" size="icon">
99
- <SearchIcon />
100
- </Button>
101
- </div>
102
- ```
103
-
104
- **Correct:**
105
-
106
- ```svelte
107
- <script lang="ts">
108
- import * as InputGroup from "$lib/components/ui/input-group";
109
- import { Button } from "$lib/components/ui/button";
110
- import SearchIcon from "@lucide/svelte/icons/search";
111
- </script>
112
-
113
- <InputGroup.Root>
114
- <InputGroup.Input placeholder="Search..." />
115
- <InputGroup.Addon>
116
- <Button size="icon">
117
- <SearchIcon data-icon="inline-start" />
118
- </Button>
119
- </InputGroup.Addon>
120
- </InputGroup.Root>
121
- ```
122
-
123
- ---
124
-
125
- ## Option sets (2–7 choices) use ToggleGroup.Root + ToggleGroup.Item
126
-
127
- Don't manually loop `Button` components with active state.
128
-
129
- **Incorrect:**
130
-
131
- ```svelte
132
- <script lang="ts">
133
- import { Button } from "$lib/components/ui/button";
134
- let selected = $state("daily");
135
- </script>
136
-
137
- <div class="flex gap-2">
138
- {#each ["daily", "weekly", "monthly"] as option (option)}
139
- <Button
140
- variant={selected === option ? "default" : "outline"}
141
- onclick={() => (selected = option)}
142
- >
143
- {option}
144
- </Button>
145
- {/each}
146
- </div>
147
- ```
148
-
149
- **Correct:**
150
-
151
- ```svelte
152
- <script lang="ts">
153
- import * as ToggleGroup from "$lib/components/ui/toggle-group";
154
- let selected = $state("daily");
155
- </script>
156
-
157
- <ToggleGroup.Root bind:value={selected} spacing={2}>
158
- <ToggleGroup.Item value="daily">Daily</ToggleGroup.Item>
159
- <ToggleGroup.Item value="weekly">Weekly</ToggleGroup.Item>
160
- <ToggleGroup.Item value="monthly">Monthly</ToggleGroup.Item>
161
- </ToggleGroup.Root>
162
- ```
163
-
164
- Combine with `Field` for labelled toggle groups:
165
-
166
- ```svelte
167
- <script lang="ts">
168
- import * as Field from "$lib/components/ui/field";
169
- import * as ToggleGroup from "$lib/components/ui/toggle-group";
170
- </script>
171
-
172
- <Field.Field orientation="horizontal">
173
- <Field.FieldTitle id="theme-label">Theme</Field.FieldTitle>
174
- <ToggleGroup.Root aria-labelledby="theme-label" spacing={2}>
175
- <ToggleGroup.Item value="light">Light</ToggleGroup.Item>
176
- <ToggleGroup.Item value="dark">Dark</ToggleGroup.Item>
177
- <ToggleGroup.Item value="system">System</ToggleGroup.Item>
178
- </ToggleGroup.Root>
179
- </Field.Field>
180
- ```
181
-
182
- ---
183
-
184
- ## Field.FieldSet + Field.FieldLegend for grouping related fields
185
-
186
- Use `Field.FieldSet` + `Field.FieldLegend` for related checkboxes, radios, or switches — not `div` with a heading:
187
-
188
- ```svelte
189
- <script lang="ts">
190
- import * as Field from "$lib/components/ui/field";
191
- import { Checkbox } from "$lib/components/ui/checkbox";
192
- </script>
193
-
194
- <Field.FieldSet>
195
- <Field.FieldLegend variant="label">Preferences</Field.FieldLegend>
196
- <Field.FieldDescription>Select all that apply.</Field.FieldDescription>
197
- <Field.FieldGroup class="gap-3">
198
- <Field.Field orientation="horizontal">
199
- <Checkbox id="dark" />
200
- <Field.FieldLabel for="dark" class="font-normal"
201
- >Dark mode</Field.FieldLabel
202
- >
203
- </Field.Field>
204
- </Field.FieldGroup>
205
- </Field.FieldSet>
206
- ```
207
-
208
- ---
209
-
210
- ## Field validation and disabled states
211
-
212
- Both attributes are needed — `data-invalid`/`data-disabled` styles the field (label, description), while `aria-invalid`/`disabled` styles the control.
213
-
214
- ```svelte
215
- <script lang="ts">
216
- import * as Field from "$lib/components/ui/field";
217
- import { Input } from "$lib/components/ui/input";
218
- </script>
219
-
220
- <!-- Invalid. -->
221
- <Field.Field data-invalid>
222
- <Field.FieldLabel for="email">Email</Field.FieldLabel>
223
- <Input id="email" aria-invalid />
224
- <Field.FieldDescription>Invalid email address.</Field.FieldDescription>
225
- </Field.Field>
226
-
227
- <!-- Disabled. -->
228
- <Field.Field data-disabled>
229
- <Field.FieldLabel for="email">Email</Field.FieldLabel>
230
- <Input id="email" disabled />
231
- </Field.Field>
232
- ```
233
-
234
- Works for all controls: `Input`, `Textarea`, `Select`, `Checkbox`, `RadioGroupItem`, `Switch`, `Slider`, `NativeSelect`, `InputOTP`.
@@ -1,107 +0,0 @@
1
- # Icons
2
-
3
- **Always use the project's configured `iconLibrary` for imports.** Check the `iconLibrary` field in `components.json`: `lucide` → `@lucide/svelte`, `tabler` → `@tabler/icons-svelte`, etc. Never assume `@lucide/svelte`.
4
-
5
- ---
6
-
7
- ## Icons in Button use data-icon attribute
8
-
9
- Add `data-icon="inline-start"` (prefix) or `data-icon="inline-end"` (suffix) to the icon. No sizing classes on the icon.
10
-
11
- **Incorrect:**
12
-
13
- ```svelte
14
- <script lang="ts">
15
- import { Button } from "$lib/components/ui/button";
16
- import SearchIcon from "@lucide/svelte/icons/search";
17
- </script>
18
-
19
- <Button>
20
- <SearchIcon class="mr-2 size-4" />
21
- Search
22
- </Button>
23
- ```
24
-
25
- **Correct:**
26
-
27
- ```svelte
28
- <script lang="ts">
29
- import { Button } from "$lib/components/ui/button";
30
- import SearchIcon from "@lucide/svelte/icons/search";
31
- import ArrowRightIcon from "@lucide/svelte/icons/arrow-right";
32
- </script>
33
-
34
- <Button>
35
- <SearchIcon data-icon="inline-start" />
36
- Search
37
- </Button>
38
-
39
- <Button>
40
- Next
41
- <ArrowRightIcon data-icon="inline-end" />
42
- </Button>
43
- ```
44
-
45
- ---
46
-
47
- ## No sizing classes on icons inside components
48
-
49
- Components handle icon sizing via CSS. Don't add `size-4`, `w-4 h-4`, or other sizing classes to icons inside `<Button>`, `DropdownMenu.Item`, `Alert.Root`, `Sidebar.*`, or other shadcn-svelte components — unless the user explicitly asks for custom icon sizes.
50
-
51
- **Incorrect:**
52
-
53
- ```svelte
54
- <script lang="ts">
55
- import { Button } from "$lib/components/ui/button";
56
- import SearchIcon from "@lucide/svelte/icons/search";
57
- </script>
58
-
59
- <Button>
60
- <SearchIcon class="size-4" data-icon="inline-start" />
61
- Search
62
- </Button>
63
- ```
64
-
65
- **Correct:**
66
-
67
- ```svelte
68
- <script lang="ts">
69
- import { Button } from "$lib/components/ui/button";
70
- import SearchIcon from "@lucide/svelte/icons/search";
71
- </script>
72
-
73
- <Button>
74
- <SearchIcon data-icon="inline-start" />
75
- Search
76
- </Button>
77
- ```
78
-
79
- The same applies to icons inside `DropdownMenu.Item`, sidebar items, and other menu rows — no extra sizing classes on the icon component.
80
-
81
- ---
82
-
83
- ## Pass icons as components, not string keys
84
-
85
- Use a component reference, not a string key to a lookup map.
86
-
87
- **Incorrect:**
88
-
89
- ```svelte
90
- <!-- String key lookup — avoid -->
91
- <DynamicIcon name="check" />
92
- ```
93
-
94
- **Correct:**
95
-
96
- ```svelte
97
- <script lang="ts">
98
- import type { Component } from "svelte";
99
- import CheckIcon from "@lucide/svelte/icons/check";
100
-
101
- let { Icon }: { Icon: Component } = $props();
102
- </script>
103
-
104
- <Icon />
105
-
106
- <!-- <StatusBadge Icon={CheckIcon} /> -->
107
- ```