platen-ui 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -2
  3. package/dist/assets/styles.css.ts.vanilla-BAmA6nA8.css +52 -0
  4. package/dist/assets/styles.css.ts.vanilla-BDHakuIO.css +39 -0
  5. package/dist/assets/styles.css.ts.vanilla-BH8WFC_6.css +29 -0
  6. package/dist/assets/styles.css.ts.vanilla-BawStcck.css +46 -0
  7. package/dist/assets/styles.css.ts.vanilla-BivsCv0a.css +36 -0
  8. package/dist/assets/styles.css.ts.vanilla-CgupK_Al.css +64 -0
  9. package/dist/assets/styles.css.ts.vanilla-S0KW5nmE.css +59 -0
  10. package/dist/assets/theme.css.ts.vanilla-e9r3lDSy.css +19 -0
  11. package/dist/components/Accordion/styles.styles.js +1 -0
  12. package/dist/components/Accordion.d.ts +12 -0
  13. package/dist/components/Accordion.js +1 -0
  14. package/dist/components/Button/styles.styles.js +1 -0
  15. package/dist/components/Button.d.ts +11 -0
  16. package/dist/components/Button.js +1 -0
  17. package/dist/components/Input/styles.styles.js +1 -0
  18. package/dist/components/Input.d.ts +9 -0
  19. package/dist/components/Input.js +1 -0
  20. package/dist/components/Progress/styles.styles.js +1 -0
  21. package/dist/components/Progress.d.ts +9 -0
  22. package/dist/components/Progress.js +1 -0
  23. package/dist/components/Select/styles.styles.js +1 -0
  24. package/dist/components/Select.d.ts +21 -0
  25. package/dist/components/Select.js +1 -0
  26. package/dist/components/Switch/styles.styles.js +1 -0
  27. package/dist/components/Switch.d.ts +9 -0
  28. package/dist/components/Switch.js +1 -0
  29. package/dist/components/Toast/styles.styles.js +1 -0
  30. package/dist/components/Toast.d.ts +23 -0
  31. package/dist/components/Toast.js +1 -0
  32. package/dist/mergeClassNames.js +1 -0
  33. package/package.json +83 -4
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 roboin
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,6 @@
1
- # Temporary Holding Version
1
+ # Platen UI
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Styled Base UI components for professional software.
4
+
5
+ > [!IMPORTANT]
6
+ > This library is under active development. Currently, pull requests are not being accepted, except for fixes to obvious bugs.
@@ -0,0 +1,52 @@
1
+ @keyframes _1ixcec3 {
2
+ 0% {
3
+ transform: translateX(-100%);
4
+ }
5
+ 50% {
6
+ transform: translateX(100%);
7
+ }
8
+ 50.01% {
9
+ transform: translateX(-100%);
10
+ }
11
+ 65% {
12
+ transform: translateX(100%);
13
+ }
14
+ 65.01% {
15
+ transform: translateX(-100%);
16
+ }
17
+ 80% {
18
+ transform: translateX(100%);
19
+ }
20
+ 100% {
21
+ transform: translateX(100%);
22
+ }
23
+ }
24
+ ._1ixcec0 {
25
+ color: var(--_1o83rkie);
26
+ display: flex;
27
+ font-size: 0.85rem;
28
+ font-variant-numeric: tabular-nums;
29
+ justify-content: space-between;
30
+ margin-bottom: 0.25rem;
31
+ }
32
+ ._1ixcec1 {
33
+ overflow: hidden;
34
+ text-overflow: ellipsis;
35
+ white-space: nowrap;
36
+ }
37
+ ._1ixcec2 {
38
+ background: var(--_1o83rki8);
39
+ border: 1px solid var(--_1o83rkia);
40
+ border-radius: var(--_1o83rkig);
41
+ height: 0.375rem;
42
+ overflow: hidden;
43
+ }
44
+ ._1ixcec4 {
45
+ background: var(--_1o83rki6);
46
+ border-radius: var(--_1o83rkig);
47
+ height: 100%;
48
+ transition: width var(--_1o83rki0) linear;
49
+ }
50
+ ._1ixcec4[data-indeterminate] {
51
+ animation: _1ixcec3 2.5s linear infinite;
52
+ }
@@ -0,0 +1,39 @@
1
+ ._1effe770 {
2
+ display: block;
3
+ position: relative;
4
+ }
5
+ ._1effe771 {
6
+ background: var(--_1o83rki8);
7
+ border: 1px solid var(--_1o83rkia);
8
+ border-radius: var(--_1o83rkig);
9
+ display: block;
10
+ padding: 0.25rem 1.75rem 0.25rem 0.5rem;
11
+ width: 100%;
12
+ }
13
+ ._1effe771:focus-visible {
14
+ outline: 2px solid #83a9d3;
15
+ }
16
+ ._1effe771::placeholder {
17
+ color: var(--_1o83rkie);
18
+ }
19
+ ._1effe770:hover ._1effe771 {
20
+ background: var(--_1o83rki9);
21
+ }
22
+ ._1effe772 {
23
+ align-items: center;
24
+ color: var(--_1o83rkie);
25
+ cursor: pointer;
26
+ display: flex;
27
+ justify-content: center;
28
+ padding: 0.25rem;
29
+ position: absolute;
30
+ right: 0.125rem;
31
+ top: 50%;
32
+ translate: 0 -50%;
33
+ }
34
+ ._1effe772:focus-visible {
35
+ outline: 2px solid #83a9d3;
36
+ }
37
+ ._1effe772:hover {
38
+ color: var(--_1o83rkic);
39
+ }
@@ -0,0 +1,29 @@
1
+ ._5dn4ur0 {
2
+ align-items: center;
3
+ background: var(--_1o83rki4);
4
+ border: 1px solid var(--_1o83rkia);
5
+ border-radius: var(--_1o83rkig);
6
+ color: var(--_1o83rkic);
7
+ cursor: pointer;
8
+ display: flex;
9
+ gap: 0.25rem;
10
+ height: fit-content;
11
+ justify-content: center;
12
+ padding: 0.25rem 1rem;
13
+ white-space: nowrap;
14
+ }
15
+ ._5dn4ur0:focus-visible {
16
+ outline: 2px solid #83a9d3;
17
+ }
18
+ ._5dn4ur0:hover {
19
+ background: var(--_1o83rki5);
20
+ }
21
+ ._5dn4ur0[data-disabled] {
22
+ background: transparent;
23
+ color: var(--_1o83rkie);
24
+ cursor: not-allowed;
25
+ opacity: 0.5;
26
+ }
27
+ ._5dn4ur0[data-disabled]:hover {
28
+ background: transparent;
29
+ }
@@ -0,0 +1,46 @@
1
+ @keyframes _1ao1rqt3 {
2
+ 0% {
3
+ transform: translateY(-50%) rotate(-90deg);
4
+ }
5
+ 100% {
6
+ transform: translateY(-50%) rotate(0deg);
7
+ }
8
+ }
9
+ ._1ao1rqt0 {
10
+ background: var(--_1o83rki4);
11
+ border: 1px solid var(--_1o83rkia);
12
+ }
13
+ ._1ao1rqt0:hover {
14
+ background: var(--_1o83rki5);
15
+ }
16
+ ._1ao1rqt0:first-child {
17
+ border-radius: var(--_1o83rkig) var(--_1o83rkig) 0 0;
18
+ }
19
+ ._1ao1rqt0:last-child {
20
+ border-radius: 0 0 var(--_1o83rkig) var(--_1o83rkig);
21
+ }
22
+ ._1ao1rqt0:not(:first-child) {
23
+ border-top: none;
24
+ }
25
+ ._1ao1rqt1 {
26
+ border-radius: var(--_1o83rkig);
27
+ cursor: pointer;
28
+ padding: 0.5rem 1rem;
29
+ position: relative;
30
+ width: 100%;
31
+ }
32
+ ._1ao1rqt1:focus-visible {
33
+ outline: 2px solid #83a9d3;
34
+ }
35
+ ._1ao1rqt2 {
36
+ position: absolute;
37
+ right: 1rem;
38
+ top: 50%;
39
+ transform: translateY(-50%);
40
+ }
41
+ ._1ao1rqt4 {
42
+ animation: _1ao1rqt3 forwards var(--_1o83rki0) ease-in-out;
43
+ }
44
+ ._1ao1rqt5 {
45
+ padding: 0.5rem 1rem;
46
+ }
@@ -0,0 +1,36 @@
1
+ ._1ca4pu70 {
2
+ background: var(--_1o83rki4);
3
+ border: 1px solid var(--_1o83rkia);
4
+ border-radius: 9999px;
5
+ cursor: pointer;
6
+ height: 1.5rem;
7
+ position: relative;
8
+ width: 3rem;
9
+ }
10
+ ._1ca4pu70:focus-visible {
11
+ outline: 2px solid #83a9d3;
12
+ }
13
+ ._1ca4pu70:hover {
14
+ background: var(--_1o83rki5);
15
+ }
16
+ ._1ca4pu70[data-checked] {
17
+ background: var(--_1o83rki6);
18
+ }
19
+ ._1ca4pu70[data-checked]:hover {
20
+ background: var(--_1o83rki7);
21
+ }
22
+ ._1ca4pu71 {
23
+ background: var(--_1o83rkic);
24
+ border-radius: 9999px;
25
+ display: block;
26
+ height: 1.25rem;
27
+ left: 0.125rem;
28
+ position: absolute;
29
+ top: 50%;
30
+ transform: translateY(-50%);
31
+ transition: left var(--_1o83rki0) ease-in-out;
32
+ width: 1.25rem;
33
+ }
34
+ ._1ca4pu71[data-checked] {
35
+ left: calc(100% - 0.125rem - 1.25rem);
36
+ }
@@ -0,0 +1,64 @@
1
+ ._33icqq0 {
2
+ align-items: center;
3
+ display: grid;
4
+ grid-column: 1 / -1;
5
+ grid-template-columns: subgrid;
6
+ }
7
+ ._33icqq1 {
8
+ cursor: pointer;
9
+ }
10
+ ._33icqq2 {
11
+ background: var(--_1o83rki4);
12
+ border: 1px solid var(--_1o83rkia);
13
+ border-radius: var(--_1o83rkig);
14
+ color: var(--_1o83rkic);
15
+ cursor: pointer;
16
+ min-height: calc(1lh + 0.25rem * 2 + 1px * 2);
17
+ min-width: 0;
18
+ padding: 0.25rem 1rem;
19
+ }
20
+ ._33icqq2:focus-visible {
21
+ outline: 2px solid #83a9d3;
22
+ }
23
+ ._33icqq2:hover {
24
+ background: var(--_1o83rki5);
25
+ }
26
+ ._33icqq3 {
27
+ background: var(--_1o83rki4);
28
+ border: 1px solid var(--_1o83rkia);
29
+ border-radius: var(--_1o83rkig);
30
+ box-shadow: var(--_1o83rkif);
31
+ color: var(--_1o83rkic);
32
+ cursor: pointer;
33
+ overflow: hidden;
34
+ width: var(--anchor-width);
35
+ }
36
+ ._33icqq4 {
37
+ max-height: var(--available-height);
38
+ overflow-y: auto;
39
+ }
40
+ ._33icqq5 {
41
+ display: block;
42
+ overflow: hidden;
43
+ text-overflow: ellipsis;
44
+ white-space: nowrap;
45
+ }
46
+ ._33icqq5[data-placeholder] {
47
+ color: var(--_1o83rkie);
48
+ }
49
+ ._33icqq6 {
50
+ padding: 0.25rem 1rem;
51
+ }
52
+ ._33icqq6:focus-visible {
53
+ outline: 2px solid #83a9d3;
54
+ background: var(--_1o83rki5);
55
+ border-radius: var(--_1o83rkig);
56
+ outline-offset: -2px;
57
+ }
58
+ ._33icqq6:hover {
59
+ background: var(--_1o83rki5);
60
+ }
61
+ ._33icqq7 {
62
+ color: var(--_1o83rkie);
63
+ padding: 0.5rem 1rem 0.25rem;
64
+ }
@@ -0,0 +1,59 @@
1
+ .opkspx0 {
2
+ bottom: 0;
3
+ display: flex;
4
+ flex-direction: column-reverse;
5
+ gap: 0.5rem;
6
+ padding: 0.5rem;
7
+ position: fixed;
8
+ right: 0;
9
+ z-index: 9999;
10
+ }
11
+ .opkspx1 {
12
+ transition: opacity var(--_1o83rki2) cubic-bezier(0.22, 1, 0.36, 1), transform var(--_1o83rki2) cubic-bezier(0.22, 1, 0.36, 1);
13
+ }
14
+ .opkspx1[data-ending-style] {
15
+ opacity: 0;
16
+ transform: translateX(25%);
17
+ transition-duration: var(--_1o83rki1);
18
+ transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
19
+ }
20
+ .opkspx1[data-starting-style] {
21
+ opacity: 0;
22
+ transform: translateX(25%);
23
+ }
24
+ .opkspx2 {
25
+ background: var(--_1o83rki4);
26
+ border: 1px solid var(--_1o83rkia);
27
+ border-radius: var(--_1o83rkig);
28
+ box-shadow: var(--_1o83rkif);
29
+ color: var(--_1o83rkie);
30
+ display: grid;
31
+ gap: 0 1rem;
32
+ grid-template-columns: auto auto;
33
+ grid-template-rows: auto auto;
34
+ max-width: 24rem;
35
+ padding: 0.5rem 1rem;
36
+ }
37
+ .opkspx1[data-type="error"] .opkspx2 {
38
+ background: var(--_1o83rki3);
39
+ color: var(--_1o83rkic);
40
+ }
41
+ .opkspx3 {
42
+ color: var(--_1o83rkic);
43
+ font-weight: bold;
44
+ grid-column: 1 / 2;
45
+ grid-row: 1 / 2;
46
+ }
47
+ .opkspx4 {
48
+ grid-column: 1 / 2;
49
+ grid-row: 2 / 3;
50
+ overflow-wrap: anywhere;
51
+ }
52
+ .opkspx5 {
53
+ align-self: center;
54
+ display: flex;
55
+ flex-direction: column;
56
+ gap: 0.5rem;
57
+ grid-column: 2 / 3;
58
+ grid-row: 1 / 3;
59
+ }
@@ -0,0 +1,19 @@
1
+ :root {
2
+ --_1o83rki0: 0.1s;
3
+ --_1o83rki1: 0.2s;
4
+ --_1o83rki2: 0.3s;
5
+ --_1o83rki3: #402a2a;
6
+ --_1o83rki4: rgb(66 73 81 / 20%);
7
+ --_1o83rki5: rgb(206 218 231 / 10%);
8
+ --_1o83rki6: #24466b;
9
+ --_1o83rki7: #3b5e84;
10
+ --_1o83rki8: rgb(4 3 1 / 60%);
11
+ --_1o83rki9: rgb(8 6 3 / 50%);
12
+ --_1o83rkia: #000000;
13
+ --_1o83rkib: #1a1c1f;
14
+ --_1o83rkic: #c2c7cc;
15
+ --_1o83rkid: #af6060;
16
+ --_1o83rkie: #8e9296;
17
+ --_1o83rkif: 0 4px 16px rgba(0, 0, 0, 0.5);
18
+ --_1o83rkig: 0.25rem;
19
+ }
@@ -0,0 +1 @@
1
+ import"./../../assets/theme.css.ts.vanilla-e9r3lDSy.css";import"./../../assets/styles.css.ts.vanilla-BawStcck.css";var e=`_1ao1rqt4`,t=`_1ao1rqt2`,n=`_1ao1rqt0`,r=`_1ao1rqt5`,i=`_1ao1rqt1`;export{e as iconAnimationStyles,t as iconStyles,n as itemStyles,r as panelStyles,i as triggerStyles};
@@ -0,0 +1,12 @@
1
+ import { ReactNode } from "react";
2
+ import { Accordion } from "@base-ui/react/accordion";
3
+ //#region src/components/Accordion/index.d.ts
4
+ declare const AccordionRoot: <Value = any>(props: Accordion.Root.Props<Value>) => React.JSX.Element;
5
+ type AccordionItemProps = Accordion.Item.Props & {
6
+ header: ReactNode;
7
+ children?: ReactNode | undefined;
8
+ className?: string | undefined;
9
+ };
10
+ declare const AccordionItem: ({ header, children, className, ...props }: AccordionItemProps) => ReactNode;
11
+ //#endregion
12
+ export { AccordionItem, AccordionRoot };
@@ -0,0 +1 @@
1
+ import{iconStyles as e,itemStyles as t,panelStyles as n,triggerStyles as r}from"./Accordion/styles.styles.js";import{mergeClassNames as i}from"../mergeClassNames.js";import{c as a}from"react/compiler-runtime";import{ChevronsDownUp as o,ChevronsUpDown as s}from"lucide-react";import{useState as c}from"react";import{Accordion as l}from"@base-ui/react/accordion";import{jsx as u,jsxs as d}from"react/jsx-runtime";const f=l.Root,p=f=>{let p=a(21),m,h,g,_;p[0]===f?(m=p[1],h=p[2],g=p[3],_=p[4]):({header:g,children:m,className:h,..._}=f,p[0]=f,p[1]=m,p[2]=h,p[3]=g,p[4]=_);let[v,y]=c(!1),[b,x]=c(!1),S;p[5]===h?S=p[6]:(S=i(t,h),p[5]=h,p[6]=S);let C;p[7]===Symbol.for(`react.memo_cache_sentinel`)?(C=e=>{x(!0),y(e)},p[7]=C):C=p[7];let w;p[8]!==b||p[9]!==v?(w=u(v?o:s,{size:16,className:i(e,b&&`_1ao1rqt4`)}),p[8]=b,p[9]=v,p[10]=w):w=p[10];let T;p[11]!==g||p[12]!==w?(T=/* @__PURE__ */ u(l.Header,{children:/* @__PURE__ */ d(l.Trigger,{className:r,children:[g,w]})}),p[11]=g,p[12]=w,p[13]=T):T=p[13];let E;p[14]===m?E=p[15]:(E=/* @__PURE__ */ u(l.Panel,{className:n,children:m}),p[14]=m,p[15]=E);let D;return p[16]!==_||p[17]!==S||p[18]!==T||p[19]!==E?(D=/* @__PURE__ */ d(l.Item,{className:S,onOpenChange:C,..._,children:[T,E]}),p[16]=_,p[17]=S,p[18]=T,p[19]=E,p[20]=D):D=p[20],D};export{p as AccordionItem,f as AccordionRoot};
@@ -0,0 +1 @@
1
+ import"./../../assets/theme.css.ts.vanilla-e9r3lDSy.css";import"./../../assets/styles.css.ts.vanilla-BH8WFC_6.css";var e=`_5dn4ur0`;export{e as buttonStyles};
@@ -0,0 +1,11 @@
1
+ import { LucideIcon } from "lucide-react";
2
+ import { ReactNode } from "react";
3
+ import { Button as Button$1 } from "@base-ui/react/button";
4
+ //#region src/components/Button/index.d.ts
5
+ type ButtonProps = Button$1.Props & {
6
+ className?: string | undefined;
7
+ icon?: LucideIcon;
8
+ };
9
+ declare const Button: ({ children, icon, className, ...props }: ButtonProps) => ReactNode;
10
+ //#endregion
11
+ export { Button };
@@ -0,0 +1 @@
1
+ import{mergeClassNames as e}from"../mergeClassNames.js";import{buttonStyles as t}from"./Button/styles.styles.js";import{c as n}from"react/compiler-runtime";import{jsx as r,jsxs as i}from"react/jsx-runtime";import{Button as a}from"@base-ui/react/button";const o=o=>{let s=n(14),c,l,u,d;s[0]===o?(c=s[1],l=s[2],u=s[3],d=s[4]):({children:c,icon:u,className:l,...d}=o,s[0]=o,s[1]=c,s[2]=l,s[3]=u,s[4]=d);let f=u,p;s[5]===l?p=s[6]:(p=e(t,l),s[5]=l,s[6]=p);let m;s[7]===f?m=s[8]:(m=f&&/* @__PURE__ */ r(f,{size:`1.25rem`}),s[7]=f,s[8]=m);let h;return s[9]!==c||s[10]!==d||s[11]!==p||s[12]!==m?(h=/* @__PURE__ */ i(a,{className:p,...d,children:[m,c]}),s[9]=c,s[10]=d,s[11]=p,s[12]=m,s[13]=h):h=s[13],h};export{o as Button};
@@ -0,0 +1 @@
1
+ import"./../../assets/theme.css.ts.vanilla-e9r3lDSy.css";import"./../../assets/styles.css.ts.vanilla-BDHakuIO.css";var e=`_1effe772`,t=`_1effe771`,n=`_1effe770`;export{e as clearButtonStyles,t as inputStyles,n as inputWrapperStyles};
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from "react";
2
+ import { Input as Input$1 } from "@base-ui/react/input";
3
+ //#region src/components/Input/index.d.ts
4
+ type InputProps = Input$1.Props & {
5
+ className?: string | undefined;
6
+ };
7
+ declare const Input: ({ className, value: $value, defaultValue, onValueChange, ...props }: InputProps) => ReactNode;
8
+ //#endregion
9
+ export { Input };
@@ -0,0 +1 @@
1
+ import{mergeClassNames as e}from"../mergeClassNames.js";import{inputStyles as t,inputWrapperStyles as n}from"./Input/styles.styles.js";import{c as r}from"react/compiler-runtime";import{XIcon as i}from"lucide-react";import{useState as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";import{Input as c}from"@base-ui/react/input";const l=l=>{let u=r(26),d,f,p,m,h;u[0]===l?(d=u[1],f=u[2],p=u[3],m=u[4],h=u[5]):({className:f,value:d,defaultValue:p,onValueChange:m,...h}=l,u[0]=l,u[1]=d,u[2]=f,u[3]=p,u[4]=m,u[5]=h);let g;u[6]!==d||u[7]!==p?(g=()=>String(d??p??``),u[6]=d,u[7]=p,u[8]=g):g=u[8];let[_,v]=a(g),[y,b]=a(d);d!==y&&(b(d),v(String(d??p??``)));let x=_!==``&&!h.disabled&&!h.readOnly,S;u[9]===m?S=u[10]:(S=e=>{let t={allowPropagation:()=>{t.isPropagationAllowed=!0},cancel:()=>{t.isCanceled=!0},event:e.nativeEvent,isCanceled:!1,isPropagationAllowed:!1,reason:`none`,trigger:e.currentTarget};m?.(``,t),t.isCanceled||v(``)},u[9]=m,u[10]=S);let C=S,w;u[11]===f?w=u[12]:(w=e(t,f),u[11]=f,u[12]=w);let T;u[13]===m?T=u[14]:(T=(e,t)=>{v(e),m?.(e,t)},u[13]=m,u[14]=T);let E;u[15]!==h||u[16]!==w||u[17]!==T||u[18]!==_?(E=/* @__PURE__ */ o(c,{...h,className:w,value:_,onValueChange:T}),u[15]=h,u[16]=w,u[17]=T,u[18]=_,u[19]=E):E=u[19];let D;u[20]!==C||u[21]!==x?(D=x&&/* @__PURE__ */ o(`button`,{type:`button`,className:`_1effe772`,"aria-label":`Clear input`,onClick:C,children:/* @__PURE__ */ o(i,{size:16})}),u[20]=C,u[21]=x,u[22]=D):D=u[22];let O;return u[23]!==E||u[24]!==D?(O=/* @__PURE__ */ s(`span`,{className:n,children:[E,D]}),u[23]=E,u[24]=D,u[25]=O):O=u[25],O};export{l as Input};
@@ -0,0 +1 @@
1
+ import"./../../assets/theme.css.ts.vanilla-e9r3lDSy.css";import"./../../assets/styles.css.ts.vanilla-BAmA6nA8.css";var e=`_1ixcec4`,t=`_1ixcec0`,n=`_1ixcec1`,r=`_1ixcec2`;export{e as indicatorStyles,t as labelContainerStyles,n as labelStyles,r as trackStyles};
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from "react";
2
+ import { Progress as Progress$1 } from "@base-ui/react/progress";
3
+ //#region src/components/Progress/index.d.ts
4
+ type ProgressProps = Progress$1.Root.Props & {
5
+ label?: ReactNode;
6
+ };
7
+ declare const Progress: ({ label, ...props }: ProgressProps) => ReactNode;
8
+ //#endregion
9
+ export { Progress };
@@ -0,0 +1 @@
1
+ import{indicatorStyles as e,labelContainerStyles as t,labelStyles as n,trackStyles as r}from"./Progress/styles.styles.js";import{c as i}from"react/compiler-runtime";import{jsx as a,jsxs as o}from"react/jsx-runtime";import{Progress as s}from"@base-ui/react/progress";const c=c=>{let l=i(12),u,d;l[0]===c?(u=l[1],d=l[2]):({label:u,...d}=c,l[0]=c,l[1]=u,l[2]=d);let f;l[3]===u?f=l[4]:(f=/* @__PURE__ */ a(s.Label,{className:n,children:u}),l[3]=u,l[4]=f);let p;l[5]===Symbol.for(`react.memo_cache_sentinel`)?(p=/* @__PURE__ */ a(s.Value,{}),l[5]=p):p=l[5];let m;l[6]===f?m=l[7]:(m=/* @__PURE__ */ o(`div`,{className:t,children:[f,p]}),l[6]=f,l[7]=m);let h;l[8]===Symbol.for(`react.memo_cache_sentinel`)?(h=/* @__PURE__ */ a(s.Track,{className:r,children:/* @__PURE__ */ a(s.Indicator,{className:e})}),l[8]=h):h=l[8];let g;return l[9]!==d||l[10]!==m?(g=/* @__PURE__ */ o(s.Root,{...d,children:[m,h]}),l[9]=d,l[10]=m,l[11]=g):g=l[11],g};export{c as Progress};
@@ -0,0 +1 @@
1
+ import"./../../assets/theme.css.ts.vanilla-e9r3lDSy.css";import"./../../assets/styles.css.ts.vanilla-CgupK_Al.css";var e=`_33icqq0`,t=`_33icqq7`,n=`_33icqq6`,r=`_33icqq1`,i=`_33icqq4`,a=`_33icqq3`,o=`_33icqq2`,s=`_33icqq5`;export{e as containerStyles,t as groupLabelStyles,n as itemStyles,r as labelStyles,i as listStyles,a as popupStyles,o as selectStyles,s as textStyles};
@@ -0,0 +1,21 @@
1
+ import { ReactElement, ReactNode } from "react";
2
+ //#region src/components/Select/index.d.ts
3
+ interface SelectOption {
4
+ value: string;
5
+ label: ReactNode;
6
+ }
7
+ interface SelectGroup {
8
+ label: string;
9
+ options: SelectOption[];
10
+ }
11
+ interface SelectProps {
12
+ label: ReactNode;
13
+ options: Array<SelectOption | SelectGroup>;
14
+ placeholder?: ReactNode;
15
+ value: string | null;
16
+ onValueChange: (value: string | null) => void;
17
+ onOpenChange?: (open: boolean) => void;
18
+ }
19
+ declare const Select: ({ options, label, placeholder, value, onValueChange, onOpenChange }: SelectProps) => ReactElement;
20
+ //#endregion
21
+ export { Select, type SelectGroup, type SelectOption };
@@ -0,0 +1 @@
1
+ import{containerStyles as e,groupLabelStyles as t,itemStyles as n,labelStyles as r,listStyles as i,popupStyles as a,selectStyles as o,textStyles as s}from"./Select/styles.styles.js";import{c}from"react/compiler-runtime";import{useState as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";import{Select as f}from"@base-ui/react/select";const p=e=>`options`in e,m=n=>{let m=c(27),{options:_,label:v,placeholder:y,value:b,onValueChange:x,onOpenChange:S}=n,[C,w]=l(!1),T;m[0]===_?T=m[1]:(T=_.flatMap(h),m[0]=_,m[1]=T);let E=T,D;m[2]===S?D=m[3]:(D=e=>{w(e),S?.(e)},m[2]=S,m[3]=D);let O=D,k=g,A;m[4]===O?A=m[5]:(A=e=>{e.preventBaseUIHandler(),O(!0)},m[4]=O,m[5]=A);let j;m[6]!==v||m[7]!==A?(j=/* @__PURE__ */ u(f.Label,{className:r,onClick:A,children:v}),m[6]=v,m[7]=A,m[8]=j):j=m[8];let M;m[9]===y?M=m[10]:(M=/* @__PURE__ */ u(f.Trigger,{className:o,children:/* @__PURE__ */ u(f.Value,{className:s,placeholder:y})}),m[9]=y,m[10]=M);let N;m[11]!==j||m[12]!==M?(N=/* @__PURE__ */ d(`div`,{className:e,children:[j,M]}),m[11]=j,m[12]=M,m[13]=N):N=m[13];let P;if(m[14]!==_){let e;m[16]===Symbol.for(`react.memo_cache_sentinel`)?(e=e=>p(e)?/* @__PURE__ */ d(f.Group,{children:[/* @__PURE__ */ u(f.GroupLabel,{className:t,children:e.label}),e.options.map(k)]},e.label):k(e),m[16]=e):e=m[16],P=_.map(e),m[14]=_,m[15]=P}else P=m[15];let F;m[17]===P?F=m[18]:(F=/* @__PURE__ */ u(f.Portal,{children:/* @__PURE__ */ u(f.Positioner,{children:/* @__PURE__ */ u(f.Popup,{className:a,children:/* @__PURE__ */ u(f.List,{className:i,children:P})})})}),m[17]=P,m[18]=F);let I;return m[19]!==E||m[20]!==O||m[21]!==x||m[22]!==C||m[23]!==N||m[24]!==F||m[25]!==b?(I=/* @__PURE__ */ d(f.Root,{items:E,value:b,onValueChange:x,open:C,onOpenChange:O,children:[N,F]}),m[19]=E,m[20]=O,m[21]=x,m[22]=C,m[23]=N,m[24]=F,m[25]=b,m[26]=I):I=m[26],I};function h(e){return p(e)?e.options:[e]}function g(e){return/* @__PURE__ */ u(f.Item,{value:e.value,className:n,children:/* @__PURE__ */ u(f.ItemText,{className:s,children:e.label})},e.value)}export{m as Select};
@@ -0,0 +1 @@
1
+ import"./../../assets/theme.css.ts.vanilla-e9r3lDSy.css";import"./../../assets/styles.css.ts.vanilla-BivsCv0a.css";var e=`_1ca4pu70`,t=`_1ca4pu71`;export{e as rootStyles,t as thumbStyles};
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from "react";
2
+ import { Switch as Switch$1 } from "@base-ui/react/switch";
3
+ //#region src/components/Switch/index.d.ts
4
+ type SwitchProps = Switch$1.Root.Props & {
5
+ className?: string | undefined;
6
+ };
7
+ declare const Switch: ({ className, ...props }: SwitchProps) => ReactNode;
8
+ //#endregion
9
+ export { Switch };
@@ -0,0 +1 @@
1
+ import{mergeClassNames as e}from"../mergeClassNames.js";import{rootStyles as t,thumbStyles as n}from"./Switch/styles.styles.js";import{c as r}from"react/compiler-runtime";import{jsx as i}from"react/jsx-runtime";import{Switch as a}from"@base-ui/react/switch";const o=o=>{let s=r(9),c,l;s[0]===o?(c=s[1],l=s[2]):({className:c,...l}=o,s[0]=o,s[1]=c,s[2]=l);let u;s[3]===c?u=s[4]:(u=e(t,c),s[3]=c,s[4]=u);let d;s[5]===Symbol.for(`react.memo_cache_sentinel`)?(d=/* @__PURE__ */ i(a.Thumb,{className:n}),s[5]=d):d=s[5];let f;return s[6]!==l||s[7]!==u?(f=/* @__PURE__ */ i(a.Root,{className:u,...l,children:d}),s[6]=l,s[7]=u,s[8]=f):f=s[8],f};export{o as Switch};
@@ -0,0 +1 @@
1
+ import"./../../assets/theme.css.ts.vanilla-e9r3lDSy.css";import"./../../assets/styles.css.ts.vanilla-S0KW5nmE.css";var e=`opkspx5`,t=`opkspx2`,n=`opkspx4`,r=`opkspx1`,i=`opkspx3`,a=`opkspx0`;export{e as actionsStyles,t as contentStyles,n as descriptionStyles,r as rootStyles,i as titleStyles,a as viewportStyles};
@@ -0,0 +1,23 @@
1
+ import { ComponentPropsWithoutRef, ReactNode } from "react";
2
+ //#region src/components/Toast/index.d.ts
3
+ interface ToastErrorOptions {
4
+ actionProps?: ComponentPropsWithoutRef<"button">;
5
+ /** The failure detail. Takes precedence over `description` when present. */
6
+ cause?: unknown;
7
+ description?: string;
8
+ id: string;
9
+ title: string;
10
+ }
11
+ declare const toastError: (options: ToastErrorOptions) => void;
12
+ interface ToastSuccessOptions {
13
+ description?: string;
14
+ id: string;
15
+ title: string;
16
+ }
17
+ declare const toastSuccess: (options: ToastSuccessOptions) => void;
18
+ interface ToastProviderProps {
19
+ children: ReactNode;
20
+ }
21
+ declare const ToastProvider: ({ children }: ToastProviderProps) => ReactNode;
22
+ //#endregion
23
+ export { ToastProvider, toastError, toastSuccess };
@@ -0,0 +1 @@
1
+ import{Button as e}from"./Button.js";import{actionsStyles as t,contentStyles as n,descriptionStyles as r,rootStyles as i,titleStyles as a,viewportStyles as o}from"./Toast/styles.styles.js";import{c as s}from"react/compiler-runtime";import{jsx as c,jsxs as l}from"react/jsx-runtime";import{Toast as u}from"@base-ui/react/toast";const d=u.createToastManager(),f=e=>e instanceof Error?e.message:String(e),p=e=>{let{cause:t,...n}=e;d.add({...n,description:`cause`in e?f(t):n.description,priority:`high`,type:`error`})},m=e=>{d.add({...e,priority:`low`,type:`success`})},h=()=>{let e=s(4),{toasts:t}=u.useToastManager(),n;e[0]===t?n=e[1]:(n=t.map(_),e[0]=t,e[1]=n);let r;return e[2]===n?r=e[3]:(r=/* @__PURE__ */ c(u.Portal,{children:/* @__PURE__ */ c(u.Viewport,{className:o,children:n})}),e[2]=n,e[3]=r),r},g=e=>{let t=s(3),{children:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=/* @__PURE__ */ c(h,{}),t[0]=r):r=t[0];let i;return t[1]===n?i=t[2]:(i=/* @__PURE__ */ l(u.Provider,{toastManager:d,children:[n,r]}),t[1]=n,t[2]=i),i};function _(o){return/* @__PURE__ */ c(u.Root,{toast:o,className:i,children:/* @__PURE__ */ l(u.Content,{className:n,children:[/* @__PURE__ */ c(u.Title,{className:a}),/* @__PURE__ */ c(u.Description,{className:r}),/* @__PURE__ */ l(`div`,{className:t,children:[o.actionProps&&/* @__PURE__ */ c(u.Action,{render:/* @__PURE__ */ c(e,{})}),/* @__PURE__ */ c(u.Close,{render:/* @__PURE__ */ c(e,{children:`OK`})})]})]})},o.id)}export{g as ToastProvider,p as toastError,m as toastSuccess};
@@ -0,0 +1 @@
1
+ const e=(...e)=>e.filter(Boolean).join(` `);export{e as mergeClassNames};
package/package.json CHANGED
@@ -1,6 +1,85 @@
1
1
  {
2
2
  "name": "platen-ui",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.0",
4
+ "description": "Styled Base UI components for professional software",
5
+ "homepage": "https://github.com/Robot-Inventor/platen-ui#readme",
6
+ "bugs": {
7
+ "url": "https://github.com/Robot-Inventor/platen-ui/issues"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/Robot-Inventor/platen-ui.git"
12
+ },
13
+ "license": "MIT",
14
+ "author": "Robot-Inventor",
15
+ "type": "module",
16
+ "publishConfig": {
17
+ "provenance": true
18
+ },
19
+ "files": ["dist"],
20
+ "exports": {
21
+ "./Accordion": {
22
+ "import": "./dist/components/Accordion.js",
23
+ "types": "./dist/components/Accordion.d.ts"
24
+ },
25
+ "./Button": {
26
+ "import": "./dist/components/Button.js",
27
+ "types": "./dist/components/Button.d.ts"
28
+ },
29
+ "./Input": {
30
+ "import": "./dist/components/Input.js",
31
+ "types": "./dist/components/Input.d.ts"
32
+ },
33
+ "./Progress": {
34
+ "import": "./dist/components/Progress.js",
35
+ "types": "./dist/components/Progress.d.ts"
36
+ },
37
+ "./Select": {
38
+ "import": "./dist/components/Select.js",
39
+ "types": "./dist/components/Select.d.ts"
40
+ },
41
+ "./Switch": {
42
+ "import": "./dist/components/Switch.js",
43
+ "types": "./dist/components/Switch.d.ts"
44
+ },
45
+ "./Toast": {
46
+ "import": "./dist/components/Toast.js",
47
+ "types": "./dist/components/Toast.d.ts"
48
+ }
49
+ },
50
+ "sideEffects": [
51
+ "**/*.css",
52
+ "**/*.styles.js"
53
+ ],
54
+ "scripts": {
55
+ "lint": "tsc --noEmit && knip && oxlint src",
56
+ "format": "prettier --write src",
57
+ "format:check": "prettier --check src",
58
+ "build": "tsdown --minify",
59
+ "ci:version": "changeset version",
60
+ "ci:publish": "bun run build && changeset publish"
61
+ },
62
+ "devDependencies": {
63
+ "@changesets/changelog-github": "^1.0.1",
64
+ "@changesets/cli": "^3.0.3",
65
+ "@robot-inventor/oxlint-config": "^0.5.1",
66
+ "@robot-inventor/tsconfig-base": "^7.2.0",
67
+ "@types/react": "^19.3.0",
68
+ "@types/react-dom": "^19.3.0",
69
+ "@vanilla-extract/css": "^1.21.3",
70
+ "@vanilla-extract/rollup-plugin": "^1.5.4",
71
+ "@vitejs/plugin-react": "^6.1.2",
72
+ "knip": "^6.41.0",
73
+ "oxc-transform-react": "^0.154.0",
74
+ "oxlint": "^1.87.0",
75
+ "prettier": "^3.9.10",
76
+ "react": "^19.3.0",
77
+ "react-dom": "^19.3.0",
78
+ "tsdown": "^0.23.1",
79
+ "typescript": "^7.0.2"
80
+ },
81
+ "dependencies": {
82
+ "@base-ui/react": "^1.9.0",
83
+ "lucide-react": "^1.55.0"
84
+ }
85
+ }