@jbpark/ui-kit 2.3.4 → 2.5.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 (54) hide show
  1. package/dist/Menu.d.mts +2 -2
  2. package/dist/Menu.d.mts.map +1 -1
  3. package/dist/Menu.mjs +4 -4
  4. package/dist/Menu.mjs.map +1 -1
  5. package/dist/components/atoms/Button/index.d.mts +5 -1
  6. package/dist/components/atoms/Button/index.d.mts.map +1 -1
  7. package/dist/components/atoms/Button/index.mjs +22 -9
  8. package/dist/components/atoms/Button/index.mjs.map +1 -1
  9. package/dist/components/atoms/Checkbox/Group/index.d.mts +2 -2
  10. package/dist/components/atoms/Checkbox/Group/index.d.mts.map +1 -1
  11. package/dist/components/atoms/Checkbox/Group/index.mjs.map +1 -1
  12. package/dist/components/atoms/Checkbox/index.d.mts +2 -3
  13. package/dist/components/atoms/Checkbox/index.d.mts.map +1 -1
  14. package/dist/components/atoms/Checkbox/index.mjs.map +1 -1
  15. package/dist/components/atoms/Radio/Group/index.d.mts +7 -2
  16. package/dist/components/atoms/Radio/Group/index.d.mts.map +1 -1
  17. package/dist/components/atoms/Radio/Group/index.mjs +15 -4
  18. package/dist/components/atoms/Radio/Group/index.mjs.map +1 -1
  19. package/dist/components/atoms/Radio/index.d.mts +6 -3
  20. package/dist/components/atoms/Radio/index.d.mts.map +1 -1
  21. package/dist/components/atoms/Radio/index.mjs +3 -2
  22. package/dist/components/atoms/Radio/index.mjs.map +1 -1
  23. package/dist/components/atoms/Skeleton/index.d.mts +1 -1
  24. package/dist/components/atoms/Skeleton/index.d.mts.map +1 -1
  25. package/dist/components/atoms/Switch/index.d.mts +6 -0
  26. package/dist/components/atoms/Switch/index.d.mts.map +1 -1
  27. package/dist/components/atoms/Switch/index.mjs +39 -5
  28. package/dist/components/atoms/Switch/index.mjs.map +1 -1
  29. package/dist/components/organisms/List/index.d.mts +1 -1
  30. package/dist/components/organisms/List/index.d.mts.map +1 -1
  31. package/dist/core/switch.d.mts +2 -0
  32. package/dist/core/switch.d.mts.map +1 -1
  33. package/dist/core/switch.mjs +5 -5
  34. package/dist/core/switch.mjs.map +1 -1
  35. package/dist/index.d.mts +5 -1
  36. package/dist/index.mjs +4 -1
  37. package/dist/providers/ConfigProvider/ConfigContext.d.mts +8 -0
  38. package/dist/providers/ConfigProvider/ConfigContext.d.mts.map +1 -0
  39. package/dist/providers/ConfigProvider/ConfigContext.mjs +11 -0
  40. package/dist/providers/ConfigProvider/ConfigContext.mjs.map +1 -0
  41. package/dist/providers/ConfigProvider/index.d.mts +18 -0
  42. package/dist/providers/ConfigProvider/index.d.mts.map +1 -0
  43. package/dist/providers/ConfigProvider/index.mjs +67 -0
  44. package/dist/providers/ConfigProvider/index.mjs.map +1 -0
  45. package/dist/providers/ConfigProvider/types.d.mts +32 -0
  46. package/dist/providers/ConfigProvider/types.d.mts.map +1 -0
  47. package/dist/providers/index.d.mts +3 -0
  48. package/dist/providers/index.mjs +4 -0
  49. package/dist/style.css +122 -35
  50. package/dist/utils.d.mts +2 -2
  51. package/dist/utils.d.mts.map +1 -1
  52. package/dist/utils.mjs +4 -4
  53. package/dist/utils.mjs.map +1 -1
  54. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["switchComponent"],"sources":["../../../../src/components/atoms/Switch/index.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from 'react';\n\nimport { switchComponent } from '@repo/ui/core';\nimport { cn } from '@repo/ui/utils';\n\nconst { Switch: Core } = switchComponent;\n\ninterface Props extends Omit<\n React.ComponentPropsWithoutRef<'button'>,\n 'onChange'\n> {\n classNames?: {\n track?: string;\n handle?: string;\n };\n defaultChecked?: boolean;\n checked?: boolean;\n disabled?: boolean;\n onChange?: (checked: boolean) => void;\n}\n\nconst Switch = ({\n className,\n classNames,\n defaultChecked,\n checked: _checked,\n onChange: _onChange = () => {},\n ...props\n}: Props) => {\n const [uncontrolledChecked, setUncontrolledChecked] = useState<boolean>(\n defaultChecked || false,\n );\n\n const controlled = _checked !== undefined;\n const checked = controlled ? _checked : uncontrolledChecked;\n\n const onChange = (next: boolean) => {\n if (!controlled) {\n setUncontrolledChecked(next);\n }\n _onChange(next);\n };\n\n return (\n <Core\n checked={checked}\n className={cn(\n 'h-8.5 w-13',\n className,\n classNames?.track,\n //\n )}\n handleClassName={cn(\n 'h-7 w-7',\n 'data-[state=checked]:translate-x-5',\n 'data-[state=unchecked]:translate-x-[2px]',\n classNames?.handle,\n )}\n onCheckedChange={checked => {\n onChange(checked);\n }}\n {...props}\n />\n );\n};\n\nexport default Switch;\n"],"mappings":";;;;;;;;;AAOA,MAAM,EAAE,QAAQ,SAASA;AAgBzB,MAAM,UAAU,EACd,WACA,YACA,gBACA,SAAS,UACT,UAAU,kBAAkB,IAC5B,GAAG,YACQ;CACX,MAAM,CAAC,qBAAqB,0BAA0B,SACpD,kBAAkB,MACnB;CAED,MAAM,aAAa,aAAa;CAChC,MAAM,UAAU,aAAa,WAAW;CAExC,MAAM,YAAY,SAAkB;AAClC,MAAI,CAAC,WACH,wBAAuB,KAAK;AAE9B,YAAU,KAAK;;AAGjB,QACE,oBAAC;EACU;EACT,WAAW,GACT,cACA,WACA,YAAY,MAEb;EACD,iBAAiB,GACf,WACA,sCACA,4CACA,YAAY,OACb;EACD,kBAAiB,YAAW;AAC1B,YAAS,QAAQ;;EAEnB,GAAI;GACJ"}
1
+ {"version":3,"file":"index.mjs","names":["switchComponent"],"sources":["../../../../src/components/atoms/Switch/index.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from 'react';\n\nimport { switchComponent } from '@repo/ui/core';\nimport { cn } from '@repo/ui/utils';\n\nconst { Switch: Core } = switchComponent;\n\nconst sizeConfig = {\n medium: {\n core: 'default' as const,\n track: 'h-8! w-12!',\n handle: 'size-6!',\n handleChecked:\n 'data-[state=unchecked]:left-0.5 data-[state=checked]:left-[calc(100%-26px)]',\n fontSize: 'text-xs',\n marginChecked: 'mr-7 ml-2',\n marginUnchecked: 'mr-2 ml-7',\n },\n small: {\n core: 'sm' as const,\n track: 'h-6! w-10!',\n handle: 'size-5!',\n handleChecked:\n 'data-[state=unchecked]:left-0.5 data-[state=checked]:left-[calc(100%-22px)]',\n fontSize: 'text-[10px]',\n marginChecked: 'mr-6 ml-1.5',\n marginUnchecked: 'mr-1.5 ml-6',\n },\n};\n\ninterface Props extends Omit<\n React.ComponentPropsWithoutRef<'button'>,\n 'onChange'\n> {\n classNames?: {\n track?: string;\n handle?: string;\n };\n size?: 'small' | 'medium';\n defaultChecked?: boolean;\n checked?: boolean;\n disabled?: boolean;\n onChange?: (checked: boolean) => void;\n checkedChildren?: React.ReactNode;\n unCheckedChildren?: React.ReactNode;\n}\n\nconst Switch = ({\n className,\n classNames,\n size = 'medium',\n defaultChecked,\n checked: _checked,\n onChange: _onChange = () => {},\n checkedChildren,\n unCheckedChildren,\n ...props\n}: Props) => {\n const [uncontrolledChecked, setUncontrolledChecked] = useState<boolean>(\n defaultChecked || false,\n );\n\n const controlled = _checked !== undefined;\n const checked = controlled ? _checked : uncontrolledChecked;\n\n const onChange = (next: boolean) => {\n if (!controlled) {\n setUncontrolledChecked(next);\n }\n _onChange(next);\n };\n\n const hasChildren = !!(checkedChildren || unCheckedChildren);\n const config = sizeConfig[size];\n\n return (\n <Core\n checked={checked}\n size={config.core}\n className={cn(\n 'relative',\n config.track,\n hasChildren && 'w-auto! overflow-hidden',\n className,\n classNames?.track,\n //\n )}\n handleClassName={cn(\n config.handle,\n '!absolute top-1/2 !-translate-y-1/2 !translate-x-0',\n 'transition-[left] duration-200 will-change-[left]',\n config.handleChecked,\n classNames?.handle,\n //\n )}\n onCheckedChange={checked => {\n onChange(checked);\n }}\n {...props}\n >\n {hasChildren && (\n <span\n className={cn(\n `grid leading-none text-white transition-[margin] duration-200\n will-change-[margin]`,\n config.fontSize,\n checked ? config.marginChecked : config.marginUnchecked,\n //\n )}\n >\n <span\n className={cn(\n 'col-start-1 row-start-1 transition-opacity duration-200',\n checked ? 'opacity-100' : 'opacity-0',\n )}\n >\n {checkedChildren}\n </span>\n <span\n className={cn(\n 'col-start-1 row-start-1 transition-opacity duration-200',\n checked ? 'opacity-0' : 'opacity-100',\n )}\n >\n {unCheckedChildren}\n </span>\n </span>\n )}\n </Core>\n );\n};\n\nexport default Switch;\n"],"mappings":";;;;;;;;;AAOA,MAAM,EAAE,QAAQ,SAASA;AAEzB,MAAM,aAAa;CACjB,QAAQ;EACN,MAAM;EACN,OAAO;EACP,QAAQ;EACR,eACE;EACF,UAAU;EACV,eAAe;EACf,iBAAiB;EAClB;CACD,OAAO;EACL,MAAM;EACN,OAAO;EACP,QAAQ;EACR,eACE;EACF,UAAU;EACV,eAAe;EACf,iBAAiB;EAClB;CACF;AAmBD,MAAM,UAAU,EACd,WACA,YACA,OAAO,UACP,gBACA,SAAS,UACT,UAAU,kBAAkB,IAC5B,iBACA,mBACA,GAAG,YACQ;CACX,MAAM,CAAC,qBAAqB,0BAA0B,SACpD,kBAAkB,MACnB;CAED,MAAM,aAAa,aAAa;CAChC,MAAM,UAAU,aAAa,WAAW;CAExC,MAAM,YAAY,SAAkB;AAClC,MAAI,CAAC,WACH,wBAAuB,KAAK;AAE9B,YAAU,KAAK;;CAGjB,MAAM,cAAc,CAAC,EAAE,mBAAmB;CAC1C,MAAM,SAAS,WAAW;AAE1B,QACE,oBAAC;EACU;EACT,MAAM,OAAO;EACb,WAAW,GACT,YACA,OAAO,OACP,eAAe,2BACf,WACA,YAAY,MAEb;EACD,iBAAiB,GACf,OAAO,QACP,sDACA,qDACA,OAAO,eACP,YAAY,OAEb;EACD,kBAAiB,YAAW;AAC1B,YAAS,QAAQ;;EAEnB,GAAI;YAEH,eACC,qBAAC;GACC,WAAW,GACT;mCAEA,OAAO,UACP,UAAU,OAAO,gBAAgB,OAAO,gBAEzC;cAED,oBAAC;IACC,WAAW,GACT,2DACA,UAAU,gBAAgB,YAC3B;cAEA;KACI,EACP,oBAAC;IACC,WAAW,GACT,2DACA,UAAU,cAAc,cACzB;cAEA;KACI;IACF;GAEJ"}
@@ -40,7 +40,7 @@ declare const List: {
40
40
  classNames,
41
41
  renderItem,
42
42
  ...props
43
- }: Props<T>): string | number | bigint | true | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | react_jsx_runtime0.JSX.Element;
43
+ }: Props<T>): string | number | bigint | true | react_jsx_runtime0.JSX.Element | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined>;
44
44
  Item: ({
45
45
  children,
46
46
  className,
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/components/organisms/List/index.tsx"],"mappings":";;;;;;UAWU,KAAA,YAAiB,IAAA,CACzB,KAAA,CAAM,wBAAA;EAGN,OAAA;EACA,WAAA,GAAc,KAAA,CAAM,cAAA,QAAsB,QAAA;EAC1C,MAAA,GAAS,KAAA,CAAM,SAAA;EACf,KAAA,GAAQ,KAAA,CAAM,SAAA;EACd,MAAA,GAAS,KAAA,CAAM,SAAA;EACf,KAAA,GAAQ,KAAA,CAAM,SAAA;EACd,UAAA;IACE,KAAA;IACA,MAAA;IACA,IAAA;EAAA;EAEF,MAAA;IACE,OAAA;IACA,OAAA;IACA,MAAA,GAAS,KAAA,CAAM,SAAA;IACf,OAAA,GAAU,wBAAA;IACV,IAAA;EAAA;EAEF,IAAA,GAAO,CAAA;EACP,UAAA,IAAc,IAAA,EAAM,CAAA,EAAG,KAAA,aAAkB,KAAA,CAAM,SAAA;AAAA;AAAA,cAG3C,IAAA;EAAA;IAAS,OAAA;IAAA,WAAA;IAAA,MAAA;IAAA,MAAA;IAAA,KAAA;IAAA,KAAA;IAAA,MAAA;IAAA,IAAA;IAAA,SAAA;IAAA,UAAA;IAAA,UAAA;IAAA,GAAA;EAAA,GAaZ,KAAA,CAAM,CAAA,sCAAE,QAAA,CAAA,KAAA,CAAA,SAAA,IAAA,OAAA,sCAAA,KAAA,CAAA,WAAA,GAAA,KAAA,CAAA,YAAA,mBAAA,KAAA,CAAA,qBAAA,SAAA,QAAA,CAAA,KAAA,CAAA,SAAA,wBAAA,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/components/organisms/List/index.tsx"],"mappings":";;;;;;UAWU,KAAA,YAAiB,IAAA,CACzB,KAAA,CAAM,wBAAA;EAGN,OAAA;EACA,WAAA,GAAc,KAAA,CAAM,cAAA,QAAsB,QAAA;EAC1C,MAAA,GAAS,KAAA,CAAM,SAAA;EACf,KAAA,GAAQ,KAAA,CAAM,SAAA;EACd,MAAA,GAAS,KAAA,CAAM,SAAA;EACf,KAAA,GAAQ,KAAA,CAAM,SAAA;EACd,UAAA;IACE,KAAA;IACA,MAAA;IACA,IAAA;EAAA;EAEF,MAAA;IACE,OAAA;IACA,OAAA;IACA,MAAA,GAAS,KAAA,CAAM,SAAA;IACf,OAAA,GAAU,wBAAA;IACV,IAAA;EAAA;EAEF,IAAA,GAAO,CAAA;EACP,UAAA,IAAc,IAAA,EAAM,CAAA,EAAG,KAAA,aAAkB,KAAA,CAAM,SAAA;AAAA;AAAA,cAG3C,IAAA;EAAA;IAAS,OAAA;IAAA,WAAA;IAAA,MAAA;IAAA,MAAA;IAAA,KAAA;IAAA,KAAA;IAAA,MAAA;IAAA,IAAA;IAAA,SAAA;IAAA,UAAA;IAAA,UAAA;IAAA,GAAA;EAAA,GAaZ,KAAA,CAAM,CAAA,sCAAE,kBAAA,CAAA,GAAA,CAAA,OAAA,GAAA,QAAA,CAAA,KAAA,CAAA,SAAA,IAAA,OAAA,sCAAA,KAAA,CAAA,WAAA,GAAA,KAAA,CAAA,YAAA,mBAAA,KAAA,CAAA,qBAAA,SAAA,QAAA,CAAA,KAAA,CAAA,SAAA"}
@@ -8,11 +8,13 @@ declare namespace switch_d_exports {
8
8
  }
9
9
  interface CustomProps {
10
10
  handleClassName?: string;
11
+ children?: React$1.ReactNode;
11
12
  }
12
13
  declare function Switch({
13
14
  className,
14
15
  size,
15
16
  handleClassName,
17
+ children,
16
18
  ...props
17
19
  }: React$1.ComponentProps<typeof SwitchPrimitive.Root> & {
18
20
  size?: 'sm' | 'default';
@@ -1 +1 @@
1
- {"version":3,"file":"switch.d.mts","names":[],"sources":["../../src/core/switch.tsx"],"mappings":";;;;;;;;UAQU,WAAA;EACR,eAAA;AAAA;AAAA,iBAGO,MAAA,CAAA;EACP,SAAA;EACA,IAAA;EACA,eAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,QAAsB,eAAA,CAAgB,IAAA;EAC7C,IAAA;AAAA,IACE,WAAA,GAAW,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"switch.d.mts","names":[],"sources":["../../src/core/switch.tsx"],"mappings":";;;;;;;;UAQU,WAAA;EACR,eAAA;EACA,QAAA,GAAW,OAAA,CAAM,SAAA;AAAA;AAAA,iBAGV,MAAA,CAAA;EACP,SAAA;EACA,IAAA;EACA,eAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,QAAsB,eAAA,CAAgB,IAAA;EAC7C,IAAA;AAAA,IACE,WAAA,GAAW,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -3,13 +3,13 @@
3
3
  import { __exportAll } from "../_virtual/_rolldown/runtime.mjs";
4
4
  import { cn } from "../utils.mjs";
5
5
  import "react";
6
- import { jsx } from "react/jsx-runtime";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
7
  import * as SwitchPrimitive from "@radix-ui/react-switch";
8
8
 
9
9
  //#region src/core/switch.tsx
10
10
  var switch_exports = /* @__PURE__ */ __exportAll({ Switch: () => Switch });
11
- function Switch({ className, size = "default", handleClassName, ...props }) {
12
- return /* @__PURE__ */ jsx(SwitchPrimitive.Root, {
11
+ function Switch({ className, size = "default", handleClassName, children, ...props }) {
12
+ return /* @__PURE__ */ jsxs(SwitchPrimitive.Root, {
13
13
  "data-slot": "switch",
14
14
  "data-size": size,
15
15
  className: cn(`peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input
@@ -21,7 +21,7 @@ function Switch({ className, size = "default", handleClassName, ...props }) {
21
21
  data-[size=default]:h-[1.15rem] data-[size=default]:w-8
22
22
  data-[size=sm]:h-3.5 data-[size=sm]:w-6`, className),
23
23
  ...props,
24
- children: /* @__PURE__ */ jsx(SwitchPrimitive.Thumb, {
24
+ children: [/* @__PURE__ */ jsx(SwitchPrimitive.Thumb, {
25
25
  "data-slot": "switch-thumb",
26
26
  className: cn(`bg-background dark:data-[state=unchecked]:bg-foreground
27
27
  dark:data-[state=checked]:bg-primary-foreground pointer-events-none
@@ -30,7 +30,7 @@ function Switch({ className, size = "default", handleClassName, ...props }) {
30
30
  group-data-[size=sm]/switch:size-3
31
31
  data-[state=checked]:translate-x-[calc(100%-2px)]
32
32
  data-[state=unchecked]:translate-x-0`, handleClassName)
33
- })
33
+ }), children]
34
34
  });
35
35
  }
36
36
 
@@ -1 +1 @@
1
- {"version":3,"file":"switch.mjs","names":[],"sources":["../../src/core/switch.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport * as SwitchPrimitive from '@radix-ui/react-switch';\n\nimport { cn } from '@repo/ui/utils';\n\ninterface CustomProps {\n handleClassName?: string;\n}\n\nfunction Switch({\n className,\n size = 'default',\n handleClassName,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: 'sm' | 'default';\n} & CustomProps) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n `peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\n focus-visible:border-ring focus-visible:ring-ring/50\n dark:data-[state=unchecked]:bg-input/80 group/switch inline-flex\n shrink-0 items-center rounded-full border border-transparent shadow-xs\n transition-all outline-none focus-visible:ring-[3px]\n disabled:cursor-not-allowed disabled:opacity-50\n data-[size=default]:h-[1.15rem] data-[size=default]:w-8\n data-[size=sm]:h-3.5 data-[size=sm]:w-6`,\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n `bg-background dark:data-[state=unchecked]:bg-foreground\n dark:data-[state=checked]:bg-primary-foreground pointer-events-none\n block rounded-full ring-0 transition-transform\n group-data-[size=default]/switch:size-4\n group-data-[size=sm]/switch:size-3\n data-[state=checked]:translate-x-[calc(100%-2px)]\n data-[state=unchecked]:translate-x-0`,\n handleClassName,\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n"],"mappings":";;;;;;;;;;AAYA,SAAS,OAAO,EACd,WACA,OAAO,WACP,iBACA,GAAG,SAGY;AACf,QACE,oBAAC,gBAAgB;EACf,aAAU;EACV,aAAW;EACX,WAAW,GACT;;;;;;;kDAQA,UACD;EACD,GAAI;YAEJ,oBAAC,gBAAgB;GACf,aAAU;GACV,WAAW,GACT;;;;;;iDAOA,gBACD;IACD;GACmB"}
1
+ {"version":3,"file":"switch.mjs","names":[],"sources":["../../src/core/switch.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport * as SwitchPrimitive from '@radix-ui/react-switch';\n\nimport { cn } from '@repo/ui/utils';\n\ninterface CustomProps {\n handleClassName?: string;\n children?: React.ReactNode;\n}\n\nfunction Switch({\n className,\n size = 'default',\n handleClassName,\n children,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: 'sm' | 'default';\n} & CustomProps) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n `peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\n focus-visible:border-ring focus-visible:ring-ring/50\n dark:data-[state=unchecked]:bg-input/80 group/switch inline-flex\n shrink-0 items-center rounded-full border border-transparent shadow-xs\n transition-all outline-none focus-visible:ring-[3px]\n disabled:cursor-not-allowed disabled:opacity-50\n data-[size=default]:h-[1.15rem] data-[size=default]:w-8\n data-[size=sm]:h-3.5 data-[size=sm]:w-6`,\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n `bg-background dark:data-[state=unchecked]:bg-foreground\n dark:data-[state=checked]:bg-primary-foreground pointer-events-none\n block rounded-full ring-0 transition-transform\n group-data-[size=default]/switch:size-4\n group-data-[size=sm]/switch:size-3\n data-[state=checked]:translate-x-[calc(100%-2px)]\n data-[state=unchecked]:translate-x-0`,\n handleClassName,\n )}\n />\n {children}\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n"],"mappings":";;;;;;;;;;AAaA,SAAS,OAAO,EACd,WACA,OAAO,WACP,iBACA,UACA,GAAG,SAGY;AACf,QACE,qBAAC,gBAAgB;EACf,aAAU;EACV,aAAW;EACX,WAAW,GACT;;;;;;;kDAQA,UACD;EACD,GAAI;aAEJ,oBAAC,gBAAgB;GACf,aAAU;GACV,WAAW,GACT;;;;;;iDAOA,gBACD;IACD,EACD;GACoB"}
package/dist/index.d.mts CHANGED
@@ -27,4 +27,8 @@ import { Swiper } from "./components/organisms/Swiper/index.mjs";
27
27
  import "./components/organisms/index.mjs";
28
28
  import { Layout } from "./components/templates/Layout/index.mjs";
29
29
  import "./components/templates/index.mjs";
30
- export { Button, Card, Checkbox, Collapse, ColorPicker, Drawer, Dropdown, FloatButton, Input, Layout, List, Marquees, Menu, Modal, Popover, Progress, Radio, Reveals, Select, Skeleton, Space, Spin, Swiper, Switch, Typography };
30
+ import { ThemeConfig, ThemeToken } from "./providers/ConfigProvider/types.mjs";
31
+ import { useConfig } from "./providers/ConfigProvider/ConfigContext.mjs";
32
+ import { ConfigProvider, Props } from "./providers/ConfigProvider/index.mjs";
33
+ import "./providers/index.mjs";
34
+ export { Button, Card, Checkbox, Collapse, ColorPicker, ConfigProvider, Props as ConfigProviderProps, Drawer, Dropdown, FloatButton, Input, Layout, List, Marquees, Menu, Modal, Popover, Progress, Radio, Reveals, Select, Skeleton, Space, Spin, Swiper, Switch, ThemeConfig, ThemeToken, Typography, useConfig };
package/dist/index.mjs CHANGED
@@ -28,5 +28,8 @@ import Swiper from "./components/organisms/Swiper/index.mjs";
28
28
  import "./components/organisms/index.mjs";
29
29
  import Layout from "./components/templates/Layout/index.mjs";
30
30
  import "./components/templates/index.mjs";
31
+ import { useConfig } from "./providers/ConfigProvider/ConfigContext.mjs";
32
+ import ConfigProvider from "./providers/ConfigProvider/index.mjs";
33
+ import "./providers/index.mjs";
31
34
 
32
- export { Button, Card, Checkbox, Collapse, ColorPicker, Drawer, Dropdown, FloatButton, Input, Layout, List, Marquees, Menu, Modal, Popover, Progress, Radio, Reveals, Select, Skeleton, Space, Spin, Swiper, Switch, Typography };
35
+ export { Button, Card, Checkbox, Collapse, ColorPicker, ConfigProvider, Drawer, Dropdown, FloatButton, Input, Layout, List, Marquees, Menu, Modal, Popover, Progress, Radio, Reveals, Select, Skeleton, Space, Spin, Swiper, Switch, Typography, useConfig };
@@ -0,0 +1,8 @@
1
+ import { ConfigContextValue } from "./types.mjs";
2
+ import "react";
3
+
4
+ //#region src/providers/ConfigProvider/ConfigContext.d.ts
5
+ declare const useConfig: () => ConfigContextValue;
6
+ //#endregion
7
+ export { useConfig };
8
+ //# sourceMappingURL=ConfigContext.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigContext.d.mts","names":[],"sources":["../../../src/providers/ConfigProvider/ConfigContext.ts"],"mappings":";;;;cAUa,SAAA,QAAS,kBAAA"}
@@ -0,0 +1,11 @@
1
+ 'use client';
2
+
3
+ import { createContext, useContext } from "react";
4
+
5
+ //#region src/providers/ConfigProvider/ConfigContext.ts
6
+ const ConfigContext = createContext({ theme: {} });
7
+ const useConfig = () => useContext(ConfigContext);
8
+
9
+ //#endregion
10
+ export { ConfigContext, useConfig };
11
+ //# sourceMappingURL=ConfigContext.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigContext.mjs","names":[],"sources":["../../../src/providers/ConfigProvider/ConfigContext.ts"],"sourcesContent":["'use client';\n\nimport { createContext, useContext } from 'react';\n\nimport type { ConfigContextValue } from './types';\n\nexport const ConfigContext = createContext<ConfigContextValue>({\n theme: {},\n});\n\nexport const useConfig = () => useContext(ConfigContext);\n"],"mappings":";;;;;AAMA,MAAa,gBAAgB,cAAkC,EAC7D,OAAO,EAAE,EACV,CAAC;AAEF,MAAa,kBAAkB,WAAW,cAAc"}
@@ -0,0 +1,18 @@
1
+ import { ThemeConfig, ThemeToken } from "./types.mjs";
2
+ import { useConfig } from "./ConfigContext.mjs";
3
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
4
+
5
+ //#region src/providers/ConfigProvider/index.d.ts
6
+ interface Props {
7
+ theme?: ThemeConfig;
8
+ className?: string;
9
+ children: React.ReactNode;
10
+ }
11
+ declare const ConfigProvider: ({
12
+ theme,
13
+ className,
14
+ children
15
+ }: Props) => react_jsx_runtime0.JSX.Element;
16
+ //#endregion
17
+ export { ConfigProvider, type Props };
18
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../src/providers/ConfigProvider/index.tsx"],"mappings":";;;;;UAmDU,KAAA;EACR,KAAA,GAAQ,WAAA;EACR,SAAA;EACA,QAAA,EAAU,KAAA,CAAM,SAAA;AAAA;AAAA,cAGZ,cAAA;EAAkB,KAAA;EAAA,SAAA;EAAA;AAAA,GAAqC,KAAA,KAAK,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -0,0 +1,67 @@
1
+ 'use client';
2
+
3
+ import { cn } from "../../utils.mjs";
4
+ import { ConfigContext, useConfig } from "./ConfigContext.mjs";
5
+ import { useMemo } from "react";
6
+ import { jsx } from "react/jsx-runtime";
7
+
8
+ //#region src/providers/ConfigProvider/index.tsx
9
+ const tokenToCssVar = {
10
+ colorPrimary: "--primary",
11
+ colorPrimaryForeground: "--primary-foreground",
12
+ colorBackground: "--background",
13
+ colorForeground: "--foreground",
14
+ colorCard: "--card",
15
+ colorCardForeground: "--card-foreground",
16
+ colorPopover: "--popover",
17
+ colorPopoverForeground: "--popover-foreground",
18
+ colorSecondary: "--secondary",
19
+ colorSecondaryForeground: "--secondary-foreground",
20
+ colorMuted: "--muted",
21
+ colorMutedForeground: "--muted-foreground",
22
+ colorAccent: "--accent",
23
+ colorAccentForeground: "--accent-foreground",
24
+ colorDestructive: "--destructive",
25
+ colorBorder: "--border",
26
+ colorInput: "--input",
27
+ colorRing: "--ring",
28
+ borderRadius: "--radius"
29
+ };
30
+ const buildCssVars = (token) => {
31
+ if (!token) return {};
32
+ const vars = {};
33
+ for (const [key, value] of Object.entries(token)) {
34
+ if (value === void 0) continue;
35
+ const cssVar = tokenToCssVar[key];
36
+ if (cssVar) vars[cssVar] = value;
37
+ }
38
+ return vars;
39
+ };
40
+ const ConfigProvider = ({ theme = {}, className, children }) => {
41
+ const parent = useConfig();
42
+ const mergedTheme = useMemo(() => ({
43
+ ...parent.theme,
44
+ ...theme,
45
+ token: {
46
+ ...parent.theme.token,
47
+ ...theme.token
48
+ }
49
+ }), [parent.theme, theme]);
50
+ const contextValue = useMemo(() => ({ theme: mergedTheme }), [mergedTheme]);
51
+ const cssVars = useMemo(() => buildCssVars(mergedTheme.token), [mergedTheme.token]);
52
+ const hasCssVars = Object.keys(cssVars).length > 0;
53
+ const hasDarkMode = mergedTheme.dark !== void 0;
54
+ const needsWrapper = hasCssVars || hasDarkMode || className;
55
+ return /* @__PURE__ */ jsx(ConfigContext.Provider, {
56
+ value: contextValue,
57
+ children: needsWrapper ? /* @__PURE__ */ jsx("div", {
58
+ className: cn(mergedTheme.dark && "dark", className),
59
+ style: hasCssVars ? cssVars : void 0,
60
+ children
61
+ }) : children
62
+ });
63
+ };
64
+
65
+ //#endregion
66
+ export { ConfigProvider as default };
67
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/providers/ConfigProvider/index.tsx"],"sourcesContent":["'use client';\n\nimport { useMemo } from 'react';\n\nimport { cn } from '@repo/ui/utils';\n\nimport { ConfigContext, useConfig } from './ConfigContext';\nimport type { ThemeConfig, ThemeToken } from './types';\n\nconst tokenToCssVar: Record<keyof ThemeToken, string> = {\n colorPrimary: '--primary',\n colorPrimaryForeground: '--primary-foreground',\n colorBackground: '--background',\n colorForeground: '--foreground',\n colorCard: '--card',\n colorCardForeground: '--card-foreground',\n colorPopover: '--popover',\n colorPopoverForeground: '--popover-foreground',\n colorSecondary: '--secondary',\n colorSecondaryForeground: '--secondary-foreground',\n colorMuted: '--muted',\n colorMutedForeground: '--muted-foreground',\n colorAccent: '--accent',\n colorAccentForeground: '--accent-foreground',\n colorDestructive: '--destructive',\n colorBorder: '--border',\n colorInput: '--input',\n colorRing: '--ring',\n borderRadius: '--radius',\n};\n\nconst buildCssVars = (token?: ThemeToken): React.CSSProperties => {\n if (!token) {\n return {};\n }\n\n const vars: Record<string, string> = {};\n\n for (const [key, value] of Object.entries(token)) {\n if (value === undefined) {\n continue;\n }\n const cssVar = tokenToCssVar[key as keyof ThemeToken];\n if (cssVar) {\n vars[cssVar] = value;\n }\n }\n\n return vars as React.CSSProperties;\n};\n\ninterface Props {\n theme?: ThemeConfig;\n className?: string;\n children: React.ReactNode;\n}\n\nconst ConfigProvider = ({ theme = {}, className, children }: Props) => {\n const parent = useConfig();\n\n const mergedTheme = useMemo<ThemeConfig>(\n () => ({\n ...parent.theme,\n ...theme,\n token: {\n ...parent.theme.token,\n ...theme.token,\n },\n }),\n [parent.theme, theme],\n );\n\n const contextValue = useMemo(() => ({ theme: mergedTheme }), [mergedTheme]);\n\n const cssVars = useMemo(\n () => buildCssVars(mergedTheme.token),\n [mergedTheme.token],\n );\n\n const hasCssVars = Object.keys(cssVars).length > 0;\n const hasDarkMode = mergedTheme.dark !== undefined;\n const needsWrapper = hasCssVars || hasDarkMode || className;\n\n return (\n <ConfigContext.Provider value={contextValue}>\n {needsWrapper ? (\n <div\n className={cn(mergedTheme.dark && 'dark', className)}\n style={hasCssVars ? cssVars : undefined}\n >\n {children}\n </div>\n ) : (\n children\n )}\n </ConfigContext.Provider>\n );\n};\n\nexport default ConfigProvider;\nexport { useConfig };\nexport type { Props, ThemeConfig, ThemeToken };\n"],"mappings":";;;;;;;;AASA,MAAM,gBAAkD;CACtD,cAAc;CACd,wBAAwB;CACxB,iBAAiB;CACjB,iBAAiB;CACjB,WAAW;CACX,qBAAqB;CACrB,cAAc;CACd,wBAAwB;CACxB,gBAAgB;CAChB,0BAA0B;CAC1B,YAAY;CACZ,sBAAsB;CACtB,aAAa;CACb,uBAAuB;CACvB,kBAAkB;CAClB,aAAa;CACb,YAAY;CACZ,WAAW;CACX,cAAc;CACf;AAED,MAAM,gBAAgB,UAA4C;AAChE,KAAI,CAAC,MACH,QAAO,EAAE;CAGX,MAAM,OAA+B,EAAE;AAEvC,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,EAAE;AAChD,MAAI,UAAU,OACZ;EAEF,MAAM,SAAS,cAAc;AAC7B,MAAI,OACF,MAAK,UAAU;;AAInB,QAAO;;AAST,MAAM,kBAAkB,EAAE,QAAQ,EAAE,EAAE,WAAW,eAAsB;CACrE,MAAM,SAAS,WAAW;CAE1B,MAAM,cAAc,eACX;EACL,GAAG,OAAO;EACV,GAAG;EACH,OAAO;GACL,GAAG,OAAO,MAAM;GAChB,GAAG,MAAM;GACV;EACF,GACD,CAAC,OAAO,OAAO,MAAM,CACtB;CAED,MAAM,eAAe,eAAe,EAAE,OAAO,aAAa,GAAG,CAAC,YAAY,CAAC;CAE3E,MAAM,UAAU,cACR,aAAa,YAAY,MAAM,EACrC,CAAC,YAAY,MAAM,CACpB;CAED,MAAM,aAAa,OAAO,KAAK,QAAQ,CAAC,SAAS;CACjD,MAAM,cAAc,YAAY,SAAS;CACzC,MAAM,eAAe,cAAc,eAAe;AAElD,QACE,oBAAC,cAAc;EAAS,OAAO;YAC5B,eACC,oBAAC;GACC,WAAW,GAAG,YAAY,QAAQ,QAAQ,UAAU;GACpD,OAAO,aAAa,UAAU;GAE7B;IACG,GAEN;GAEqB"}
@@ -0,0 +1,32 @@
1
+ //#region src/providers/ConfigProvider/types.d.ts
2
+ interface ThemeToken {
3
+ colorPrimary?: string;
4
+ colorPrimaryForeground?: string;
5
+ colorBackground?: string;
6
+ colorForeground?: string;
7
+ colorCard?: string;
8
+ colorCardForeground?: string;
9
+ colorPopover?: string;
10
+ colorPopoverForeground?: string;
11
+ colorSecondary?: string;
12
+ colorSecondaryForeground?: string;
13
+ colorMuted?: string;
14
+ colorMutedForeground?: string;
15
+ colorAccent?: string;
16
+ colorAccentForeground?: string;
17
+ colorDestructive?: string;
18
+ colorBorder?: string;
19
+ colorInput?: string;
20
+ colorRing?: string;
21
+ borderRadius?: string;
22
+ }
23
+ interface ThemeConfig {
24
+ token?: ThemeToken;
25
+ dark?: boolean;
26
+ }
27
+ interface ConfigContextValue {
28
+ theme: ThemeConfig;
29
+ }
30
+ //#endregion
31
+ export { ConfigContextValue, ThemeConfig, ThemeToken };
32
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../../src/providers/ConfigProvider/types.ts"],"mappings":";UAAiB,UAAA;EAEf,YAAA;EACA,sBAAA;EACA,eAAA;EACA,eAAA;EACA,SAAA;EACA,mBAAA;EACA,YAAA;EACA,sBAAA;EACA,cAAA;EACA,wBAAA;EACA,UAAA;EACA,oBAAA;EACA,WAAA;EACA,qBAAA;EACA,gBAAA;EACA,WAAA;EACA,UAAA;EACA,SAAA;EAGA,YAAA;AAAA;AAAA,UAGe,WAAA;EACf,KAAA,GAAQ,UAAA;EACR,IAAA;AAAA;AAAA,UAGe,kBAAA;EACf,KAAA,EAAO,WAAA;AAAA"}
@@ -0,0 +1,3 @@
1
+ import { ThemeConfig, ThemeToken } from "./ConfigProvider/types.mjs";
2
+ import { useConfig } from "./ConfigProvider/ConfigContext.mjs";
3
+ import { ConfigProvider, Props } from "./ConfigProvider/index.mjs";
@@ -0,0 +1,4 @@
1
+ import { useConfig } from "./ConfigProvider/ConfigContext.mjs";
2
+ import ConfigProvider from "./ConfigProvider/index.mjs";
3
+
4
+ export { };