@popgrids/ui 0.0.29 → 0.0.31

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 (110) hide show
  1. package/dist/banner-notification.cjs.map +1 -1
  2. package/dist/banner-notification.js.map +1 -1
  3. package/dist/button-link.cjs +10 -4
  4. package/dist/button-link.cjs.map +1 -1
  5. package/dist/button-link.d.cts +8 -4
  6. package/dist/button-link.d.ts +8 -4
  7. package/dist/button-link.js +10 -4
  8. package/dist/button-link.js.map +1 -1
  9. package/dist/button.cjs +45 -25
  10. package/dist/button.cjs.map +1 -1
  11. package/dist/button.d.cts +2 -2
  12. package/dist/button.d.ts +2 -2
  13. package/dist/button.js +45 -25
  14. package/dist/button.js.map +1 -1
  15. package/dist/checkbox.cjs +1 -1
  16. package/dist/checkbox.cjs.map +1 -1
  17. package/dist/checkbox.js +1 -1
  18. package/dist/checkbox.js.map +1 -1
  19. package/dist/content-block.cjs +4 -4
  20. package/dist/content-block.cjs.map +1 -1
  21. package/dist/content-block.js +5 -5
  22. package/dist/content-block.js.map +1 -1
  23. package/dist/default-header.cjs +59 -0
  24. package/dist/default-header.cjs.map +1 -0
  25. package/dist/default-header.d.cts +19 -0
  26. package/dist/default-header.d.ts +19 -0
  27. package/dist/default-header.js +57 -0
  28. package/dist/default-header.js.map +1 -0
  29. package/dist/dialog.cjs +62 -46
  30. package/dist/dialog.cjs.map +1 -1
  31. package/dist/dialog.js +62 -46
  32. package/dist/dialog.js.map +1 -1
  33. package/dist/dropdown-menu-B_GCzleM.d.cts +32 -0
  34. package/dist/dropdown-menu-B_GCzleM.d.ts +32 -0
  35. package/dist/dropdown-menu.cjs +17 -32
  36. package/dist/dropdown-menu.cjs.map +1 -1
  37. package/dist/dropdown-menu.d.cts +43 -29
  38. package/dist/dropdown-menu.d.ts +43 -29
  39. package/dist/dropdown-menu.js +17 -32
  40. package/dist/dropdown-menu.js.map +1 -1
  41. package/dist/footer.cjs +35 -155
  42. package/dist/footer.cjs.map +1 -1
  43. package/dist/footer.d.cts +7 -6
  44. package/dist/footer.d.ts +7 -6
  45. package/dist/footer.js +36 -156
  46. package/dist/footer.js.map +1 -1
  47. package/dist/index.cjs +676 -309
  48. package/dist/index.cjs.map +1 -1
  49. package/dist/index.d.cts +6 -1
  50. package/dist/index.d.ts +6 -1
  51. package/dist/index.js +667 -310
  52. package/dist/index.js.map +1 -1
  53. package/dist/input-group.cjs +182 -0
  54. package/dist/input-group.cjs.map +1 -0
  55. package/dist/input-group.d.cts +42 -0
  56. package/dist/input-group.d.ts +42 -0
  57. package/dist/input-group.js +175 -0
  58. package/dist/input-group.js.map +1 -0
  59. package/dist/input.cjs +3 -3
  60. package/dist/input.cjs.map +1 -1
  61. package/dist/input.js +3 -3
  62. package/dist/input.js.map +1 -1
  63. package/dist/label.cjs +1 -1
  64. package/dist/label.cjs.map +1 -1
  65. package/dist/label.js +1 -1
  66. package/dist/label.js.map +1 -1
  67. package/dist/loader.cjs +12 -15
  68. package/dist/loader.cjs.map +1 -1
  69. package/dist/loader.js +13 -16
  70. package/dist/loader.js.map +1 -1
  71. package/dist/logo.cjs +311 -0
  72. package/dist/logo.cjs.map +1 -0
  73. package/dist/logo.d.cts +39 -0
  74. package/dist/logo.d.ts +39 -0
  75. package/dist/logo.js +309 -0
  76. package/dist/logo.js.map +1 -0
  77. package/dist/metafile-cjs.json +1 -1
  78. package/dist/metafile-esm.json +1 -1
  79. package/dist/notification-badge.cjs.map +1 -1
  80. package/dist/notification-badge.js.map +1 -1
  81. package/dist/section-header.cjs +28 -45
  82. package/dist/section-header.cjs.map +1 -1
  83. package/dist/section-header.d.cts +1 -1
  84. package/dist/section-header.d.ts +1 -1
  85. package/dist/section-header.js +28 -45
  86. package/dist/section-header.js.map +1 -1
  87. package/dist/tag.cjs +6 -6
  88. package/dist/tag.cjs.map +1 -1
  89. package/dist/tag.js +6 -6
  90. package/dist/tag.js.map +1 -1
  91. package/dist/template-header.cjs +28 -0
  92. package/dist/template-header.cjs.map +1 -0
  93. package/dist/template-header.d.cts +13 -0
  94. package/dist/template-header.d.ts +13 -0
  95. package/dist/template-header.js +26 -0
  96. package/dist/template-header.js.map +1 -0
  97. package/dist/textarea.cjs +27 -0
  98. package/dist/textarea.cjs.map +1 -0
  99. package/dist/textarea.d.cts +10 -0
  100. package/dist/textarea.d.ts +10 -0
  101. package/dist/textarea.js +25 -0
  102. package/dist/textarea.js.map +1 -0
  103. package/dist/theme.css +229 -27
  104. package/dist/tooltip.cjs +5 -15
  105. package/dist/tooltip.cjs.map +1 -1
  106. package/dist/tooltip.d.cts +1 -1
  107. package/dist/tooltip.d.ts +1 -1
  108. package/dist/tooltip.js +5 -15
  109. package/dist/tooltip.js.map +1 -1
  110. package/package.json +63 -3
@@ -0,0 +1,182 @@
1
+ 'use strict';
2
+
3
+ var classVarianceAuthority = require('class-variance-authority');
4
+ var button = require('@base-ui/react/button');
5
+ var clsx = require('clsx');
6
+ var tailwindMerge = require('tailwind-merge');
7
+ var input = require('@base-ui/react/input');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+
10
+ // src/components/input-group/input-group.tsx
11
+ function cn(...inputs) {
12
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
13
+ }
14
+ function Input({ className, type, ...props }) {
15
+ return /* @__PURE__ */ jsxRuntime.jsx(
16
+ input.Input,
17
+ {
18
+ type,
19
+ "data-slot": "input",
20
+ className: cn(
21
+ "h-9 w-full min-w-0 rounded-sm border border-input bg-transparent px-3 py-1 text-base shadow-xs outline-none transition-[color,box-shadow] selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:font-medium file:text-foreground file:text-sm placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30",
22
+ "focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring",
23
+ "aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",
24
+ className
25
+ ),
26
+ ...props
27
+ }
28
+ );
29
+ }
30
+ function Textarea({ className, ...props }) {
31
+ return /* @__PURE__ */ jsxRuntime.jsx(
32
+ "textarea",
33
+ {
34
+ "data-slot": "textarea",
35
+ className: cn(
36
+ "field-sizing-content flex min-h-16 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-xs outline-none transition-[color,box-shadow] placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:ring-destructive/40",
37
+ className
38
+ ),
39
+ ...props
40
+ }
41
+ );
42
+ }
43
+ function InputGroup({ className, ...props }) {
44
+ return (
45
+ // biome-ignore lint/a11y/useSemanticElements: <fieldset> breaks flex layout
46
+ /* @__PURE__ */ jsxRuntime.jsx(
47
+ "div",
48
+ {
49
+ "data-slot": "input-group",
50
+ role: "group",
51
+ className: cn(
52
+ "group/input-group relative flex h-9 w-full min-w-0 items-center rounded-sm border border-input shadow-xs outline-none transition-[color,box-shadow] in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-start]]:h-auto has-[>textarea]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:flex-col has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring has-[[data-slot][aria-invalid=true]]:ring-[3px] has-[[data-slot][aria-invalid=true]]:ring-destructive/20 dark:bg-input/30 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-start]]:[&>input]:pl-1.5",
53
+ className
54
+ ),
55
+ ...props
56
+ }
57
+ )
58
+ );
59
+ }
60
+ var inputGroupAddonVariants = classVarianceAuthority.cva(
61
+ "flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",
62
+ {
63
+ variants: {
64
+ align: {
65
+ "inline-start": "order-first pl-2 has-[>button]:-ml-1 has-[>kbd]:ml-[-0.15rem]",
66
+ "inline-end": "order-last pr-2 has-[>button]:-mr-1 has-[>kbd]:mr-[-0.15rem]",
67
+ "block-start": "order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2",
68
+ "block-end": "order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2"
69
+ }
70
+ },
71
+ defaultVariants: {
72
+ align: "inline-start"
73
+ }
74
+ }
75
+ );
76
+ function InputGroupAddon({ className, align = "inline-start", ...props }) {
77
+ const focusSiblingInput = (currentTarget) => {
78
+ if (!currentTarget.closest("button")) {
79
+ currentTarget.parentElement?.querySelector("input")?.focus();
80
+ }
81
+ };
82
+ return (
83
+ // biome-ignore lint/a11y/useSemanticElements: <fieldset> breaks flex layout
84
+ // biome-ignore lint/a11y/noNoninteractiveElementInteractions: click-to-focus is an intentional UX enhancement
85
+ /* @__PURE__ */ jsxRuntime.jsx(
86
+ "div",
87
+ {
88
+ role: "group",
89
+ "data-slot": "input-group-addon",
90
+ "data-align": align,
91
+ className: cn(inputGroupAddonVariants({ align }), className),
92
+ onClick: (e) => focusSiblingInput(e.currentTarget),
93
+ onKeyDown: (e) => {
94
+ if (e.key === "Enter" || e.key === " ") {
95
+ focusSiblingInput(e.currentTarget);
96
+ }
97
+ },
98
+ ...props
99
+ }
100
+ )
101
+ );
102
+ }
103
+ var inputGroupButtonVariants = classVarianceAuthority.cva("flex items-center gap-2 text-sm shadow-none", {
104
+ variants: {
105
+ size: {
106
+ xs: "h-5 gap-1 rounded-[calc(var(--radius)-5px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5",
107
+ sm: "",
108
+ "icon-xs": "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
109
+ "icon-sm": "size-8 p-0 has-[>svg]:p-0"
110
+ }
111
+ },
112
+ defaultVariants: {
113
+ size: "xs"
114
+ }
115
+ });
116
+ function InputGroupButton({
117
+ className,
118
+ type = "button",
119
+ size = "xs",
120
+ ...props
121
+ }) {
122
+ return /* @__PURE__ */ jsxRuntime.jsx(
123
+ button.Button,
124
+ {
125
+ type,
126
+ "data-size": size,
127
+ className: cn(
128
+ "inline-flex cursor-pointer items-center justify-center text-muted-foreground outline-none transition-colors hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",
129
+ inputGroupButtonVariants({ size }),
130
+ className
131
+ ),
132
+ ...props
133
+ }
134
+ );
135
+ }
136
+ function InputGroupText({ className, ...props }) {
137
+ return /* @__PURE__ */ jsxRuntime.jsx(
138
+ "span",
139
+ {
140
+ className: cn(
141
+ "flex items-center gap-2 text-muted-foreground text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none",
142
+ className
143
+ ),
144
+ ...props
145
+ }
146
+ );
147
+ }
148
+ function InputGroupInput({ className, ...props }) {
149
+ return /* @__PURE__ */ jsxRuntime.jsx(
150
+ Input,
151
+ {
152
+ "data-slot": "input-group-control",
153
+ className: cn(
154
+ "flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent",
155
+ className
156
+ ),
157
+ ...props
158
+ }
159
+ );
160
+ }
161
+ function InputGroupTextarea({ className, ...props }) {
162
+ return /* @__PURE__ */ jsxRuntime.jsx(
163
+ Textarea,
164
+ {
165
+ "data-slot": "input-group-control",
166
+ className: cn(
167
+ "flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent",
168
+ className
169
+ ),
170
+ ...props
171
+ }
172
+ );
173
+ }
174
+
175
+ exports.InputGroup = InputGroup;
176
+ exports.InputGroupAddon = InputGroupAddon;
177
+ exports.InputGroupButton = InputGroupButton;
178
+ exports.InputGroupInput = InputGroupInput;
179
+ exports.InputGroupText = InputGroupText;
180
+ exports.InputGroupTextarea = InputGroupTextarea;
181
+ //# sourceMappingURL=input-group.cjs.map
182
+ //# sourceMappingURL=input-group.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/utils.ts","../src/components/input/input.tsx","../src/components/textarea/textarea.tsx","../src/components/input-group/input-group.tsx"],"names":["twMerge","clsx","jsx","InputPrimitive","cva","ButtonPrimitive"],"mappings":"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","file":"input-group.cjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport { Input as InputPrimitive } from \"@base-ui/react/input\";\n\nimport { cn } from \"../../lib/utils\";\nimport type { InputProps } from \"./types\";\n\nfunction Input({ className, type, ...props }: InputProps) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(\n \"h-9 w-full min-w-0 rounded-sm border border-input bg-transparent px-3 py-1 text-base shadow-xs outline-none transition-[color,box-shadow] selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:font-medium file:text-foreground file:text-sm placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30\",\n \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring\",\n \"aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","import { cn } from \"../../lib/utils\";\nimport type { TextareaProps } from \"./types\";\n\nfunction Textarea({ className, ...props }: TextareaProps) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"field-sizing-content flex min-h-16 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-xs outline-none transition-[color,box-shadow] placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:ring-destructive/40\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","\"use client\";\n\nimport { cva } from \"class-variance-authority\";\n\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Input } from \"../input\";\nimport { Textarea } from \"../textarea\";\nimport type {\n InputGroupAddonProps,\n InputGroupButtonProps,\n InputGroupInputProps,\n InputGroupProps,\n InputGroupTextareaProps,\n InputGroupTextProps,\n} from \"./types\";\n\nfunction InputGroup({ className, ...props }: InputGroupProps) {\n return (\n // biome-ignore lint/a11y/useSemanticElements: <fieldset> breaks flex layout\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group relative flex h-9 w-full min-w-0 items-center rounded-sm border border-input shadow-xs outline-none transition-[color,box-shadow] in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-start]]:h-auto has-[>textarea]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:flex-col has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring has-[[data-slot][aria-invalid=true]]:ring-[3px] has-[[data-slot][aria-invalid=true]]:ring-destructive/20 dark:bg-input/30 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-start]]:[&>input]:pl-1.5\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst inputGroupAddonVariants = cva(\n \"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n align: {\n \"inline-start\": \"order-first pl-2 has-[>button]:-ml-1 has-[>kbd]:ml-[-0.15rem]\",\n \"inline-end\": \"order-last pr-2 has-[>button]:-mr-1 has-[>kbd]:mr-[-0.15rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\",\n \"block-end\":\n \"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n },\n);\n\nfunction InputGroupAddon({ className, align = \"inline-start\", ...props }: InputGroupAddonProps) {\n const focusSiblingInput = (currentTarget: HTMLElement) => {\n if (!currentTarget.closest(\"button\")) {\n currentTarget.parentElement?.querySelector(\"input\")?.focus();\n }\n };\n\n return (\n // biome-ignore lint/a11y/useSemanticElements: <fieldset> breaks flex layout\n // biome-ignore lint/a11y/noNoninteractiveElementInteractions: click-to-focus is an intentional UX enhancement\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => focusSiblingInput(e.currentTarget)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n focusSiblingInput(e.currentTarget);\n }\n }}\n {...props}\n />\n );\n}\n\nconst inputGroupButtonVariants = cva(\"flex items-center gap-2 text-sm shadow-none\", {\n variants: {\n size: {\n xs: \"h-5 gap-1 rounded-[calc(var(--radius)-5px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"\",\n \"icon-xs\": \"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n});\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n size = \"xs\",\n ...props\n}: InputGroupButtonProps) {\n return (\n <ButtonPrimitive\n type={type}\n data-size={size}\n className={cn(\n \"inline-flex cursor-pointer items-center justify-center text-muted-foreground outline-none transition-colors hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n inputGroupButtonVariants({ size }),\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupText({ className, ...props }: InputGroupTextProps) {\n return (\n <span\n className={cn(\n \"flex items-center gap-2 text-muted-foreground text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupInput({ className, ...props }: InputGroupInputProps) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupTextarea({ className, ...props }: InputGroupTextareaProps) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n InputGroupText,\n InputGroupTextarea,\n};\n"]}
@@ -0,0 +1,42 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { Button } from '@base-ui/react/button';
4
+
5
+ interface InputGroupProps extends React.ComponentProps<"div"> {
6
+ className?: string;
7
+ }
8
+
9
+ type InputGroupAddonAlign = "inline-start" | "inline-end" | "block-start" | "block-end";
10
+
11
+ interface InputGroupAddonProps extends React.ComponentProps<"div"> {
12
+ align?: InputGroupAddonAlign;
13
+ className?: string;
14
+ }
15
+
16
+ type InputGroupButtonSize = "xs" | "sm" | "icon-xs" | "icon-sm";
17
+
18
+ type InputGroupButtonProps = Omit<Button.Props, "className" | "render"> & {
19
+ size?: InputGroupButtonSize;
20
+ className?: string;
21
+ };
22
+
23
+ interface InputGroupTextProps extends React.ComponentProps<"span"> {
24
+ className?: string;
25
+ }
26
+
27
+ interface InputGroupInputProps extends React.ComponentProps<"input"> {
28
+ className?: string;
29
+ }
30
+
31
+ interface InputGroupTextareaProps extends React.ComponentProps<"textarea"> {
32
+ className?: string;
33
+ }
34
+
35
+ declare function InputGroup({ className, ...props }: InputGroupProps): react_jsx_runtime.JSX.Element;
36
+ declare function InputGroupAddon({ className, align, ...props }: InputGroupAddonProps): react_jsx_runtime.JSX.Element;
37
+ declare function InputGroupButton({ className, type, size, ...props }: InputGroupButtonProps): react_jsx_runtime.JSX.Element;
38
+ declare function InputGroupText({ className, ...props }: InputGroupTextProps): react_jsx_runtime.JSX.Element;
39
+ declare function InputGroupInput({ className, ...props }: InputGroupInputProps): react_jsx_runtime.JSX.Element;
40
+ declare function InputGroupTextarea({ className, ...props }: InputGroupTextareaProps): react_jsx_runtime.JSX.Element;
41
+
42
+ export { InputGroup, InputGroupAddon, type InputGroupAddonAlign, type InputGroupAddonProps, InputGroupButton, type InputGroupButtonProps, type InputGroupButtonSize, InputGroupInput, type InputGroupInputProps, type InputGroupProps, InputGroupText, type InputGroupTextProps, InputGroupTextarea, type InputGroupTextareaProps };
@@ -0,0 +1,42 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { Button } from '@base-ui/react/button';
4
+
5
+ interface InputGroupProps extends React.ComponentProps<"div"> {
6
+ className?: string;
7
+ }
8
+
9
+ type InputGroupAddonAlign = "inline-start" | "inline-end" | "block-start" | "block-end";
10
+
11
+ interface InputGroupAddonProps extends React.ComponentProps<"div"> {
12
+ align?: InputGroupAddonAlign;
13
+ className?: string;
14
+ }
15
+
16
+ type InputGroupButtonSize = "xs" | "sm" | "icon-xs" | "icon-sm";
17
+
18
+ type InputGroupButtonProps = Omit<Button.Props, "className" | "render"> & {
19
+ size?: InputGroupButtonSize;
20
+ className?: string;
21
+ };
22
+
23
+ interface InputGroupTextProps extends React.ComponentProps<"span"> {
24
+ className?: string;
25
+ }
26
+
27
+ interface InputGroupInputProps extends React.ComponentProps<"input"> {
28
+ className?: string;
29
+ }
30
+
31
+ interface InputGroupTextareaProps extends React.ComponentProps<"textarea"> {
32
+ className?: string;
33
+ }
34
+
35
+ declare function InputGroup({ className, ...props }: InputGroupProps): react_jsx_runtime.JSX.Element;
36
+ declare function InputGroupAddon({ className, align, ...props }: InputGroupAddonProps): react_jsx_runtime.JSX.Element;
37
+ declare function InputGroupButton({ className, type, size, ...props }: InputGroupButtonProps): react_jsx_runtime.JSX.Element;
38
+ declare function InputGroupText({ className, ...props }: InputGroupTextProps): react_jsx_runtime.JSX.Element;
39
+ declare function InputGroupInput({ className, ...props }: InputGroupInputProps): react_jsx_runtime.JSX.Element;
40
+ declare function InputGroupTextarea({ className, ...props }: InputGroupTextareaProps): react_jsx_runtime.JSX.Element;
41
+
42
+ export { InputGroup, InputGroupAddon, type InputGroupAddonAlign, type InputGroupAddonProps, InputGroupButton, type InputGroupButtonProps, type InputGroupButtonSize, InputGroupInput, type InputGroupInputProps, type InputGroupProps, InputGroupText, type InputGroupTextProps, InputGroupTextarea, type InputGroupTextareaProps };
@@ -0,0 +1,175 @@
1
+ import { cva } from 'class-variance-authority';
2
+ import { Button } from '@base-ui/react/button';
3
+ import { clsx } from 'clsx';
4
+ import { twMerge } from 'tailwind-merge';
5
+ import { Input as Input$1 } from '@base-ui/react/input';
6
+ import { jsx } from 'react/jsx-runtime';
7
+
8
+ // src/components/input-group/input-group.tsx
9
+ function cn(...inputs) {
10
+ return twMerge(clsx(inputs));
11
+ }
12
+ function Input({ className, type, ...props }) {
13
+ return /* @__PURE__ */ jsx(
14
+ Input$1,
15
+ {
16
+ type,
17
+ "data-slot": "input",
18
+ className: cn(
19
+ "h-9 w-full min-w-0 rounded-sm border border-input bg-transparent px-3 py-1 text-base shadow-xs outline-none transition-[color,box-shadow] selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:font-medium file:text-foreground file:text-sm placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30",
20
+ "focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring",
21
+ "aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",
22
+ className
23
+ ),
24
+ ...props
25
+ }
26
+ );
27
+ }
28
+ function Textarea({ className, ...props }) {
29
+ return /* @__PURE__ */ jsx(
30
+ "textarea",
31
+ {
32
+ "data-slot": "textarea",
33
+ className: cn(
34
+ "field-sizing-content flex min-h-16 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-xs outline-none transition-[color,box-shadow] placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:ring-destructive/40",
35
+ className
36
+ ),
37
+ ...props
38
+ }
39
+ );
40
+ }
41
+ function InputGroup({ className, ...props }) {
42
+ return (
43
+ // biome-ignore lint/a11y/useSemanticElements: <fieldset> breaks flex layout
44
+ /* @__PURE__ */ jsx(
45
+ "div",
46
+ {
47
+ "data-slot": "input-group",
48
+ role: "group",
49
+ className: cn(
50
+ "group/input-group relative flex h-9 w-full min-w-0 items-center rounded-sm border border-input shadow-xs outline-none transition-[color,box-shadow] in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-start]]:h-auto has-[>textarea]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:flex-col has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring has-[[data-slot][aria-invalid=true]]:ring-[3px] has-[[data-slot][aria-invalid=true]]:ring-destructive/20 dark:bg-input/30 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-start]]:[&>input]:pl-1.5",
51
+ className
52
+ ),
53
+ ...props
54
+ }
55
+ )
56
+ );
57
+ }
58
+ var inputGroupAddonVariants = cva(
59
+ "flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",
60
+ {
61
+ variants: {
62
+ align: {
63
+ "inline-start": "order-first pl-2 has-[>button]:-ml-1 has-[>kbd]:ml-[-0.15rem]",
64
+ "inline-end": "order-last pr-2 has-[>button]:-mr-1 has-[>kbd]:mr-[-0.15rem]",
65
+ "block-start": "order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2",
66
+ "block-end": "order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2"
67
+ }
68
+ },
69
+ defaultVariants: {
70
+ align: "inline-start"
71
+ }
72
+ }
73
+ );
74
+ function InputGroupAddon({ className, align = "inline-start", ...props }) {
75
+ const focusSiblingInput = (currentTarget) => {
76
+ if (!currentTarget.closest("button")) {
77
+ currentTarget.parentElement?.querySelector("input")?.focus();
78
+ }
79
+ };
80
+ return (
81
+ // biome-ignore lint/a11y/useSemanticElements: <fieldset> breaks flex layout
82
+ // biome-ignore lint/a11y/noNoninteractiveElementInteractions: click-to-focus is an intentional UX enhancement
83
+ /* @__PURE__ */ jsx(
84
+ "div",
85
+ {
86
+ role: "group",
87
+ "data-slot": "input-group-addon",
88
+ "data-align": align,
89
+ className: cn(inputGroupAddonVariants({ align }), className),
90
+ onClick: (e) => focusSiblingInput(e.currentTarget),
91
+ onKeyDown: (e) => {
92
+ if (e.key === "Enter" || e.key === " ") {
93
+ focusSiblingInput(e.currentTarget);
94
+ }
95
+ },
96
+ ...props
97
+ }
98
+ )
99
+ );
100
+ }
101
+ var inputGroupButtonVariants = cva("flex items-center gap-2 text-sm shadow-none", {
102
+ variants: {
103
+ size: {
104
+ xs: "h-5 gap-1 rounded-[calc(var(--radius)-5px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5",
105
+ sm: "",
106
+ "icon-xs": "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
107
+ "icon-sm": "size-8 p-0 has-[>svg]:p-0"
108
+ }
109
+ },
110
+ defaultVariants: {
111
+ size: "xs"
112
+ }
113
+ });
114
+ function InputGroupButton({
115
+ className,
116
+ type = "button",
117
+ size = "xs",
118
+ ...props
119
+ }) {
120
+ return /* @__PURE__ */ jsx(
121
+ Button,
122
+ {
123
+ type,
124
+ "data-size": size,
125
+ className: cn(
126
+ "inline-flex cursor-pointer items-center justify-center text-muted-foreground outline-none transition-colors hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",
127
+ inputGroupButtonVariants({ size }),
128
+ className
129
+ ),
130
+ ...props
131
+ }
132
+ );
133
+ }
134
+ function InputGroupText({ className, ...props }) {
135
+ return /* @__PURE__ */ jsx(
136
+ "span",
137
+ {
138
+ className: cn(
139
+ "flex items-center gap-2 text-muted-foreground text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none",
140
+ className
141
+ ),
142
+ ...props
143
+ }
144
+ );
145
+ }
146
+ function InputGroupInput({ className, ...props }) {
147
+ return /* @__PURE__ */ jsx(
148
+ Input,
149
+ {
150
+ "data-slot": "input-group-control",
151
+ className: cn(
152
+ "flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent",
153
+ className
154
+ ),
155
+ ...props
156
+ }
157
+ );
158
+ }
159
+ function InputGroupTextarea({ className, ...props }) {
160
+ return /* @__PURE__ */ jsx(
161
+ Textarea,
162
+ {
163
+ "data-slot": "input-group-control",
164
+ className: cn(
165
+ "flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent",
166
+ className
167
+ ),
168
+ ...props
169
+ }
170
+ );
171
+ }
172
+
173
+ export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea };
174
+ //# sourceMappingURL=input-group.js.map
175
+ //# sourceMappingURL=input-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/utils.ts","../src/components/input/input.tsx","../src/components/textarea/textarea.tsx","../src/components/input-group/input-group.tsx"],"names":["InputPrimitive","jsx","ButtonPrimitive"],"mappings":"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","file":"input-group.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport { Input as InputPrimitive } from \"@base-ui/react/input\";\n\nimport { cn } from \"../../lib/utils\";\nimport type { InputProps } from \"./types\";\n\nfunction Input({ className, type, ...props }: InputProps) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(\n \"h-9 w-full min-w-0 rounded-sm border border-input bg-transparent px-3 py-1 text-base shadow-xs outline-none transition-[color,box-shadow] selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:font-medium file:text-foreground file:text-sm placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30\",\n \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring\",\n \"aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","import { cn } from \"../../lib/utils\";\nimport type { TextareaProps } from \"./types\";\n\nfunction Textarea({ className, ...props }: TextareaProps) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"field-sizing-content flex min-h-16 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-xs outline-none transition-[color,box-shadow] placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:ring-destructive/40\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","\"use client\";\n\nimport { cva } from \"class-variance-authority\";\n\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Input } from \"../input\";\nimport { Textarea } from \"../textarea\";\nimport type {\n InputGroupAddonProps,\n InputGroupButtonProps,\n InputGroupInputProps,\n InputGroupProps,\n InputGroupTextareaProps,\n InputGroupTextProps,\n} from \"./types\";\n\nfunction InputGroup({ className, ...props }: InputGroupProps) {\n return (\n // biome-ignore lint/a11y/useSemanticElements: <fieldset> breaks flex layout\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group relative flex h-9 w-full min-w-0 items-center rounded-sm border border-input shadow-xs outline-none transition-[color,box-shadow] in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-start]]:h-auto has-[>textarea]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:flex-col has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring has-[[data-slot][aria-invalid=true]]:ring-[3px] has-[[data-slot][aria-invalid=true]]:ring-destructive/20 dark:bg-input/30 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-start]]:[&>input]:pl-1.5\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst inputGroupAddonVariants = cva(\n \"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n align: {\n \"inline-start\": \"order-first pl-2 has-[>button]:-ml-1 has-[>kbd]:ml-[-0.15rem]\",\n \"inline-end\": \"order-last pr-2 has-[>button]:-mr-1 has-[>kbd]:mr-[-0.15rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\",\n \"block-end\":\n \"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n },\n);\n\nfunction InputGroupAddon({ className, align = \"inline-start\", ...props }: InputGroupAddonProps) {\n const focusSiblingInput = (currentTarget: HTMLElement) => {\n if (!currentTarget.closest(\"button\")) {\n currentTarget.parentElement?.querySelector(\"input\")?.focus();\n }\n };\n\n return (\n // biome-ignore lint/a11y/useSemanticElements: <fieldset> breaks flex layout\n // biome-ignore lint/a11y/noNoninteractiveElementInteractions: click-to-focus is an intentional UX enhancement\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => focusSiblingInput(e.currentTarget)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n focusSiblingInput(e.currentTarget);\n }\n }}\n {...props}\n />\n );\n}\n\nconst inputGroupButtonVariants = cva(\"flex items-center gap-2 text-sm shadow-none\", {\n variants: {\n size: {\n xs: \"h-5 gap-1 rounded-[calc(var(--radius)-5px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"\",\n \"icon-xs\": \"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n});\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n size = \"xs\",\n ...props\n}: InputGroupButtonProps) {\n return (\n <ButtonPrimitive\n type={type}\n data-size={size}\n className={cn(\n \"inline-flex cursor-pointer items-center justify-center text-muted-foreground outline-none transition-colors hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n inputGroupButtonVariants({ size }),\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupText({ className, ...props }: InputGroupTextProps) {\n return (\n <span\n className={cn(\n \"flex items-center gap-2 text-muted-foreground text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupInput({ className, ...props }: InputGroupInputProps) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupTextarea({ className, ...props }: InputGroupTextareaProps) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n InputGroupText,\n InputGroupTextarea,\n};\n"]}
package/dist/input.cjs CHANGED
@@ -16,9 +16,9 @@ function Input({ className, type, ...props }) {
16
16
  type,
17
17
  "data-slot": "input",
18
18
  className: cn(
19
- "file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-sm border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
20
- "focus-visible:border-ring focus-visible:ring-ring focus-visible:ring-[3px]",
21
- "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
19
+ "h-9 w-full min-w-0 rounded-sm border border-input bg-transparent px-3 py-1 text-base shadow-xs outline-none transition-[color,box-shadow] selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:font-medium file:text-foreground file:text-sm placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30",
20
+ "focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring",
21
+ "aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",
22
22
  className
23
23
  ),
24
24
  ...props
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/utils.ts","../src/components/input/input.tsx"],"names":["twMerge","clsx","jsx","InputPrimitive"],"mappings":";;;;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAOA,qBAAA,CAAQC,SAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACEA,SAAS,MAAM,EAAE,SAAA,EAAW,IAAA,EAAM,GAAG,OAAM,EAAe;AACxD,EAAA,uBACEC,cAAA;AAAA,IAACC,WAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,WAAA,EAAU,OAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,4bAAA;AAAA,QACA,4EAAA;AAAA,QACA,wGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ","file":"input.cjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport { Input as InputPrimitive } from \"@base-ui/react/input\";\n\nimport { cn } from \"../../lib/utils\";\nimport { InputProps } from \"./types\";\n\nfunction Input({ className, type, ...props }: InputProps) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-sm border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n"]}
1
+ {"version":3,"sources":["../src/lib/utils.ts","../src/components/input/input.tsx"],"names":["twMerge","clsx","jsx","InputPrimitive"],"mappings":";;;;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAOA,qBAAA,CAAQC,SAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACEA,SAAS,MAAM,EAAE,SAAA,EAAW,IAAA,EAAM,GAAG,OAAM,EAAe;AACxD,EAAA,uBACEC,cAAA;AAAA,IAACC,WAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,WAAA,EAAU,OAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,4bAAA;AAAA,QACA,4EAAA;AAAA,QACA,wGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ","file":"input.cjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport { Input as InputPrimitive } from \"@base-ui/react/input\";\n\nimport { cn } from \"../../lib/utils\";\nimport type { InputProps } from \"./types\";\n\nfunction Input({ className, type, ...props }: InputProps) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(\n \"h-9 w-full min-w-0 rounded-sm border border-input bg-transparent px-3 py-1 text-base shadow-xs outline-none transition-[color,box-shadow] selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:font-medium file:text-foreground file:text-sm placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30\",\n \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring\",\n \"aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n"]}
package/dist/input.js CHANGED
@@ -14,9 +14,9 @@ function Input({ className, type, ...props }) {
14
14
  type,
15
15
  "data-slot": "input",
16
16
  className: cn(
17
- "file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-sm border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
18
- "focus-visible:border-ring focus-visible:ring-ring focus-visible:ring-[3px]",
19
- "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
17
+ "h-9 w-full min-w-0 rounded-sm border border-input bg-transparent px-3 py-1 text-base shadow-xs outline-none transition-[color,box-shadow] selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:font-medium file:text-foreground file:text-sm placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30",
18
+ "focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring",
19
+ "aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",
20
20
  className
21
21
  ),
22
22
  ...props
package/dist/input.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/utils.ts","../src/components/input/input.tsx"],"names":["InputPrimitive"],"mappings":";;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACEA,SAAS,MAAM,EAAE,SAAA,EAAW,IAAA,EAAM,GAAG,OAAM,EAAe;AACxD,EAAA,uBACE,GAAA;AAAA,IAACA,OAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,WAAA,EAAU,OAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,4bAAA;AAAA,QACA,4EAAA;AAAA,QACA,wGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ","file":"input.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport { Input as InputPrimitive } from \"@base-ui/react/input\";\n\nimport { cn } from \"../../lib/utils\";\nimport { InputProps } from \"./types\";\n\nfunction Input({ className, type, ...props }: InputProps) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-sm border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n"]}
1
+ {"version":3,"sources":["../src/lib/utils.ts","../src/components/input/input.tsx"],"names":["InputPrimitive"],"mappings":";;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACEA,SAAS,MAAM,EAAE,SAAA,EAAW,IAAA,EAAM,GAAG,OAAM,EAAe;AACxD,EAAA,uBACE,GAAA;AAAA,IAACA,OAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,WAAA,EAAU,OAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,4bAAA;AAAA,QACA,4EAAA;AAAA,QACA,wGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ","file":"input.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport { Input as InputPrimitive } from \"@base-ui/react/input\";\n\nimport { cn } from \"../../lib/utils\";\nimport type { InputProps } from \"./types\";\n\nfunction Input({ className, type, ...props }: InputProps) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(\n \"h-9 w-full min-w-0 rounded-sm border border-input bg-transparent px-3 py-1 text-base shadow-xs outline-none transition-[color,box-shadow] selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:font-medium file:text-foreground file:text-sm placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30\",\n \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring\",\n \"aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n"]}
package/dist/label.cjs CHANGED
@@ -15,7 +15,7 @@ function Label({ className, render, ...props }) {
15
15
  const defaultProps = {
16
16
  "data-slot": "label",
17
17
  className: cn(
18
- "flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
18
+ "flex select-none items-center gap-2 font-medium text-sm leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50 group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50",
19
19
  className
20
20
  )
21
21
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/utils.ts","../src/components/label/label.tsx"],"names":["twMerge","clsx","useRender","mergeProps"],"mappings":";;;;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAOA,qBAAA,CAAQC,SAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;;;ACGA,SAAS,MAAM,EAAE,SAAA,EAAW,MAAA,EAAQ,GAAG,OAAM,EAAe;AAC1D,EAAA,MAAM,YAAA,GAAwC;AAAA,IAC5C,WAAA,EAAa,OAAA;AAAA,IACb,SAAA,EAAW,EAAA;AAAA,MACT,qNAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,OAAOC,mBAAA,CAAU;AAAA,IACf,cAAA,EAAgB,OAAA;AAAA,IAChB,MAAA;AAAA,IACA,KAAA,EAAOC,qBAAA,CAAoB,YAAA,EAAc,KAAK;AAAA,GAC/C,CAAA;AACH","file":"label.cjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\n\nimport { cn } from \"../../lib/utils\";\nimport type { LabelProps } from \"./types\";\n\nfunction Label({ className, render, ...props }: LabelProps) {\n const defaultProps: Record<string, unknown> = {\n \"data-slot\": \"label\",\n className: cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className,\n ),\n };\n\n return useRender({\n defaultTagName: \"label\",\n render,\n props: mergeProps<\"label\">(defaultProps, props),\n });\n}\n\nexport { Label };\n"]}
1
+ {"version":3,"sources":["../src/lib/utils.ts","../src/components/label/label.tsx"],"names":["twMerge","clsx","useRender","mergeProps"],"mappings":";;;;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAOA,qBAAA,CAAQC,SAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;;;ACGA,SAAS,MAAM,EAAE,SAAA,EAAW,MAAA,EAAQ,GAAG,OAAM,EAAe;AAC1D,EAAA,MAAM,YAAA,GAAwC;AAAA,IAC5C,WAAA,EAAa,OAAA;AAAA,IACb,SAAA,EAAW,EAAA;AAAA,MACT,qNAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,OAAOC,mBAAA,CAAU;AAAA,IACf,cAAA,EAAgB,OAAA;AAAA,IAChB,MAAA;AAAA,IACA,KAAA,EAAOC,qBAAA,CAAoB,YAAA,EAAc,KAAK;AAAA,GAC/C,CAAA;AACH","file":"label.cjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\n\nimport { cn } from \"../../lib/utils\";\nimport type { LabelProps } from \"./types\";\n\nfunction Label({ className, render, ...props }: LabelProps) {\n const defaultProps: Record<string, unknown> = {\n \"data-slot\": \"label\",\n className: cn(\n \"flex select-none items-center gap-2 font-medium text-sm leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50 group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50\",\n className,\n ),\n };\n\n return useRender({\n defaultTagName: \"label\",\n render,\n props: mergeProps<\"label\">(defaultProps, props),\n });\n}\n\nexport { Label };\n"]}
package/dist/label.js CHANGED
@@ -13,7 +13,7 @@ function Label({ className, render, ...props }) {
13
13
  const defaultProps = {
14
14
  "data-slot": "label",
15
15
  className: cn(
16
- "flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
16
+ "flex select-none items-center gap-2 font-medium text-sm leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50 group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50",
17
17
  className
18
18
  )
19
19
  };
package/dist/label.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/utils.ts","../src/components/label/label.tsx"],"names":[],"mappings":";;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;;;ACGA,SAAS,MAAM,EAAE,SAAA,EAAW,MAAA,EAAQ,GAAG,OAAM,EAAe;AAC1D,EAAA,MAAM,YAAA,GAAwC;AAAA,IAC5C,WAAA,EAAa,OAAA;AAAA,IACb,SAAA,EAAW,EAAA;AAAA,MACT,qNAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,OAAO,SAAA,CAAU;AAAA,IACf,cAAA,EAAgB,OAAA;AAAA,IAChB,MAAA;AAAA,IACA,KAAA,EAAO,UAAA,CAAoB,YAAA,EAAc,KAAK;AAAA,GAC/C,CAAA;AACH","file":"label.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\n\nimport { cn } from \"../../lib/utils\";\nimport type { LabelProps } from \"./types\";\n\nfunction Label({ className, render, ...props }: LabelProps) {\n const defaultProps: Record<string, unknown> = {\n \"data-slot\": \"label\",\n className: cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className,\n ),\n };\n\n return useRender({\n defaultTagName: \"label\",\n render,\n props: mergeProps<\"label\">(defaultProps, props),\n });\n}\n\nexport { Label };\n"]}
1
+ {"version":3,"sources":["../src/lib/utils.ts","../src/components/label/label.tsx"],"names":[],"mappings":";;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;;;ACGA,SAAS,MAAM,EAAE,SAAA,EAAW,MAAA,EAAQ,GAAG,OAAM,EAAe;AAC1D,EAAA,MAAM,YAAA,GAAwC;AAAA,IAC5C,WAAA,EAAa,OAAA;AAAA,IACb,SAAA,EAAW,EAAA;AAAA,MACT,qNAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,OAAO,SAAA,CAAU;AAAA,IACf,cAAA,EAAgB,OAAA;AAAA,IAChB,MAAA;AAAA,IACA,KAAA,EAAO,UAAA,CAAoB,YAAA,EAAc,KAAK;AAAA,GAC/C,CAAA;AACH","file":"label.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\n\nimport { cn } from \"../../lib/utils\";\nimport type { LabelProps } from \"./types\";\n\nfunction Label({ className, render, ...props }: LabelProps) {\n const defaultProps: Record<string, unknown> = {\n \"data-slot\": \"label\",\n className: cn(\n \"flex select-none items-center gap-2 font-medium text-sm leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50 group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50\",\n className,\n ),\n };\n\n return useRender({\n defaultTagName: \"label\",\n render,\n props: mergeProps<\"label\">(defaultProps, props),\n });\n}\n\nexport { Label };\n"]}
package/dist/loader.cjs CHANGED
@@ -101,23 +101,20 @@ function Loader({
101
101
  ) }) })
102
102
  ]
103
103
  }
104
- ) : /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: Array.from({ length: dotCount }, (_, index) => {
104
+ ) : Array.from({ length: dotCount }, (_, index) => {
105
105
  const delaySeconds = index * 0.035;
106
- return (
107
- // biome-ignore lint/suspicious/noArrayIndexKey: Dots are static and ordered
108
- /* @__PURE__ */ jsxRuntime.jsx(
109
- "div",
110
- {
111
- className: "bg-grayscale-200 dark:bg-grayscale-700 animate-loader-wave absolute top-0 size-[3px] rounded-full motion-reduce:animate-none",
112
- style: {
113
- left: `${index}px`,
114
- animationDelay: `${delaySeconds}s`
115
- }
116
- },
117
- index
118
- )
106
+ return /* @__PURE__ */ jsxRuntime.jsx(
107
+ "div",
108
+ {
109
+ className: "absolute top-0 size-[3px] animate-loader-wave rounded-full bg-grayscale-200 motion-reduce:animate-none dark:bg-grayscale-700",
110
+ style: {
111
+ left: `${index}px`,
112
+ animationDelay: `${delaySeconds}s`
113
+ }
114
+ },
115
+ index
119
116
  );
120
- }) })
117
+ })
121
118
  }
122
119
  );
123
120
  }