@jbpark/ui-kit 4.1.0 → 5.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 (55) hide show
  1. package/dist/Button.d.mts.map +1 -1
  2. package/dist/Button.mjs +7 -2
  3. package/dist/Button.mjs.map +1 -1
  4. package/dist/Space.mjs +2 -0
  5. package/dist/Space.mjs.map +1 -1
  6. package/dist/components/atoms/skeleton/skeleton.mjs +1 -1
  7. package/dist/components/atoms/skeleton/skeleton.mjs.map +1 -1
  8. package/dist/components/molecules/dropdown.mjs +1 -1
  9. package/dist/components/molecules/dropdown.mjs.map +1 -1
  10. package/dist/components/organisms/imperative-stack.mjs +6 -4
  11. package/dist/components/organisms/imperative-stack.mjs.map +1 -1
  12. package/dist/components/organisms/modal.d.mts.map +1 -1
  13. package/dist/components/organisms/modal.mjs +12 -7
  14. package/dist/components/organisms/modal.mjs.map +1 -1
  15. package/dist/components/organisms/toast.d.mts.map +1 -1
  16. package/dist/components/organisms/toast.mjs +3 -1
  17. package/dist/components/organisms/toast.mjs.map +1 -1
  18. package/dist/components/templates/grid/col.d.mts.map +1 -1
  19. package/dist/components/templates/grid/col.mjs +35 -15
  20. package/dist/components/templates/grid/col.mjs.map +1 -1
  21. package/dist/components/templates/grid/row-context.mjs +1 -2
  22. package/dist/components/templates/grid/row-context.mjs.map +1 -1
  23. package/dist/components/templates/grid/row.d.mts.map +1 -1
  24. package/dist/components/templates/grid/row.mjs +2 -9
  25. package/dist/components/templates/grid/row.mjs.map +1 -1
  26. package/dist/components/templates/layout/content.d.mts.map +1 -1
  27. package/dist/components/templates/layout/content.mjs +5 -1
  28. package/dist/components/templates/layout/content.mjs.map +1 -1
  29. package/dist/components/templates/layout/sider.mjs +22 -7
  30. package/dist/components/templates/layout/sider.mjs.map +1 -1
  31. package/dist/components/templates/page-header.d.mts.map +1 -1
  32. package/dist/components/templates/page-header.mjs +3 -1
  33. package/dist/components/templates/page-header.mjs.map +1 -1
  34. package/dist/core/badge.d.mts +1 -1
  35. package/dist/core/button.d.mts +1 -1
  36. package/dist/index.d.mts +3 -2
  37. package/dist/index.mjs +2 -1
  38. package/dist/providers/config/config.d.mts +9 -1
  39. package/dist/providers/config/config.d.mts.map +1 -1
  40. package/dist/providers/config/config.mjs +79 -9
  41. package/dist/providers/config/config.mjs.map +1 -1
  42. package/dist/providers/config/context.d.mts.map +1 -1
  43. package/dist/providers/config/context.mjs +6 -2
  44. package/dist/providers/config/context.mjs.map +1 -1
  45. package/dist/providers/config/index.d.mts +3 -2
  46. package/dist/providers/config/registry.d.mts +14 -0
  47. package/dist/providers/config/registry.d.mts.map +1 -0
  48. package/dist/providers/config/registry.mjs +26 -0
  49. package/dist/providers/config/registry.mjs.map +1 -0
  50. package/dist/providers/config/types.d.mts +32 -2
  51. package/dist/providers/config/types.d.mts.map +1 -1
  52. package/dist/providers.d.mts +3 -2
  53. package/dist/providers.mjs +2 -1
  54. package/dist/style.css +47 -0
  55. package/package.json +2 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.mjs","names":[],"sources":["../../../src/providers/config/registry.tsx"],"sourcesContent":["'use client';\n\nimport { Context } from './context';\nimport type { ContextValue } from './types';\n\n// The imperative stack (Modal.*/Toast.*, see organisms/imperative-stack.tsx)\n// renders into its own React root, outside any <Config> ancestor — there's\n// no call-site component to read useConfig() from, since these are plain\n// function calls, not JSX. This module-level registry is how that root\n// finds a Config to inherit anyway: the app's root Config registers its\n// current context value here, and the stack re-wraps itself with it as a\n// snapshot at render time (not a live subscription — a Modal/Toast that's\n// already open won't pick up a Config change made after it was created,\n// same \"reflects state at creation\" behavior as everything else about the\n// imperative API being a one-shot call).\n//\n// Only the root Config (no Config ancestor of its own — see\n// `isRoot` in config.tsx) registers. A section-local nested Config (used\n// for one-off theming of part of a page) intentionally does not — an app-\n// wide `Modal.confirm()` call has no natural association with whichever\n// nested Config happened to render most recently, so it should inherit\n// the app's actual root configuration instead.\nlet currentValue: ContextValue | null = null;\n\nexport const registerRootConfig = (value: ContextValue): (() => void) => {\n currentValue = value;\n\n return () => {\n if (currentValue === value) {\n currentValue = null;\n }\n };\n};\n\nexport const getRootConfigValue = (): ContextValue | null => currentValue;\n\n// Wraps the imperative stack's rendered items with whatever the root\n// Config's snapshot currently is, so useConfig() inside Modal/Toast (and\n// anything they render) resolves theme/locale/componentSize/etc instead of\n// the raw context default. A no-op passthrough when no root Config has\n// registered (e.g. no <Config> anywhere in the app).\nexport const ConfigSnapshotProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const value = getRootConfigValue();\n\n if (!value) {\n return children;\n }\n\n return <Context.Provider value={value}>{children}</Context.Provider>;\n};\n"],"mappings":";;;;;;AAsBA,IAAI,eAAoC;AAExC,MAAa,sBAAsB,UAAsC;AACvE,gBAAe;AAEf,cAAa;AACX,MAAI,iBAAiB,MACnB,gBAAe;;;AAKrB,MAAa,2BAAgD;AAO7D,MAAa,0BAA0B,EACrC,eAGI;CACJ,MAAM,QAAQ,oBAAoB;AAElC,KAAI,CAAC,MACH,QAAO;AAGT,QAAO,oBAAC,QAAQ;EAAgB;EAAQ;GAA4B"}
@@ -19,10 +19,31 @@ interface ThemeToken {
19
19
  colorInput?: string;
20
20
  colorRing?: string;
21
21
  borderRadius?: string;
22
+ btnBackground?: string;
23
+ btnBackgroundHover?: string;
24
+ btnBackgroundActive?: string;
25
+ btnBorder?: string;
26
+ btnForeground?: string;
27
+ sidebar?: string;
28
+ sidebarForeground?: string;
29
+ sidebarPrimary?: string;
30
+ sidebarPrimaryForeground?: string;
31
+ sidebarAccent?: string;
32
+ sidebarAccentForeground?: string;
33
+ sidebarBorder?: string;
34
+ sidebarRing?: string;
35
+ chart1?: string;
36
+ chart2?: string;
37
+ chart3?: string;
38
+ chart4?: string;
39
+ chart5?: string;
40
+ fontSans?: string;
41
+ fontMono?: string;
22
42
  }
23
43
  interface ThemeConfig {
24
44
  token?: ThemeToken;
25
- dark?: boolean;
45
+ darkToken?: ThemeToken;
46
+ dark?: 'light' | 'dark' | 'system';
26
47
  }
27
48
  interface Locale {
28
49
  close?: string;
@@ -31,12 +52,21 @@ interface Locale {
31
52
  loading?: string;
32
53
  expand?: string;
33
54
  collapse?: string;
55
+ back?: string;
56
+ ok?: string;
57
+ cancel?: string;
34
58
  }
59
+ type ComponentSize = 'small' | 'middle' | 'large';
60
+ type DefaultProps = Record<string, Record<string, unknown>>;
35
61
  interface ContextValue {
36
62
  theme: ThemeConfig;
37
63
  locale: Locale;
64
+ direction?: 'ltr' | 'rtl';
38
65
  getContainer: () => HTMLElement | undefined;
66
+ componentSize?: ComponentSize;
67
+ defaultProps?: DefaultProps;
68
+ isConfigured: boolean;
39
69
  }
40
70
  //#endregion
41
- export { ContextValue, Locale, ThemeConfig, ThemeToken };
71
+ export { ComponentSize, ContextValue, DefaultProps, Locale, ThemeConfig, ThemeToken };
42
72
  //# sourceMappingURL=types.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.mts","names":[],"sources":["../../../src/providers/config/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,UAQe,MAAA;EACf,KAAA;EACA,KAAA;EACA,SAAA;EACA,OAAA;EACA,MAAA;EACA,QAAA;AAAA;AAAA,UAGe,YAAA;EACf,KAAA,EAAO,WAAA;EACP,MAAA,EAAQ,MAAA;EAUR,YAAA,QAAoB,WAAA;AAAA"}
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../../src/providers/config/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;EASA,YAAA;EAIA,aAAA;EACA,kBAAA;EACA,mBAAA;EACA,SAAA;EACA,aAAA;EAGA,OAAA;EACA,iBAAA;EACA,cAAA;EACA,wBAAA;EACA,aAAA;EACA,uBAAA;EACA,aAAA;EACA,WAAA;EAGA,MAAA;EACA,MAAA;EACA,MAAA;EACA,MAAA;EACA,MAAA;EAGA,QAAA;EACA,QAAA;AAAA;AAAA,UAGe,WAAA;EACf,KAAA,GAAQ,UAAA;EAKR,SAAA,GAAY,UAAA;EASZ,IAAA;AAAA;AAAA,UAQe,MAAA;EACf,KAAA;EACA,KAAA;EACA,SAAA;EACA,OAAA;EACA,MAAA;EACA,QAAA;EACA,IAAA;EACA,EAAA;EACA,MAAA;AAAA;AAAA,KAMU,aAAA;AAAA,KAYA,YAAA,GAAe,MAAA,SAAe,MAAA;AAAA,UAEzB,YAAA;EACf,KAAA,EAAO,WAAA;EACP,MAAA,EAAQ,MAAA;EACR,SAAA;EAUA,YAAA,QAAoB,WAAA;EACpB,aAAA,GAAgB,aAAA;EAChB,YAAA,GAAe,YAAA;EAKf,YAAA;AAAA"}
@@ -1,5 +1,6 @@
1
- import { Locale, ThemeConfig, ThemeToken } from "./providers/config/types.mjs";
1
+ import { ComponentSize, DefaultProps, Locale, ThemeConfig, ThemeToken } from "./providers/config/types.mjs";
2
2
  import { DEFAULT_LOCALE, useConfig } from "./providers/config/context.mjs";
3
3
  import { Config, Props } from "./providers/config/config.mjs";
4
+ import { ConfigSnapshotProvider, getRootConfigValue } from "./providers/config/registry.mjs";
4
5
  import "./providers/config/index.mjs";
5
- export { Config, type Props as ConfigProps, DEFAULT_LOCALE, type Locale, type ThemeConfig, type ThemeToken, useConfig };
6
+ export { type ComponentSize, Config, type Props as ConfigProps, ConfigSnapshotProvider, DEFAULT_LOCALE, type DefaultProps, type Locale, type ThemeConfig, type ThemeToken, getRootConfigValue, useConfig };
@@ -1,4 +1,5 @@
1
1
  import { DEFAULT_LOCALE, useConfig } from "./providers/config/context.mjs";
2
+ import { ConfigSnapshotProvider, getRootConfigValue } from "./providers/config/registry.mjs";
2
3
  import Config from "./providers/config/config.mjs";
3
4
 
4
- export { Config, DEFAULT_LOCALE, useConfig };
5
+ export { Config, ConfigSnapshotProvider, DEFAULT_LOCALE, getRootConfigValue, useConfig };
package/dist/style.css CHANGED
@@ -3,6 +3,8 @@
3
3
  @layer theme, base, components, utilities;
4
4
  @layer theme {
5
5
  :root, :host {
6
+ --font-sans: var(--font-geist-sans);
7
+ --font-mono: var(--font-geist-mono);
6
8
  --color-red-400: oklch(70.4% 0.191 22.216);
7
9
  --color-yellow-400: oklch(85.2% 0.199 91.936);
8
10
  --color-yellow-500: oklch(79.5% 0.184 86.047);
@@ -54,6 +56,8 @@
54
56
  --leading-snug: 1.375;
55
57
  --leading-normal: 1.5;
56
58
  --radius-xs: 0.125rem;
59
+ --radius-sm: calc(var(--radius) - 4px);
60
+ --radius-lg: var(--radius);
57
61
  --animate-spin: spin 1s linear infinite;
58
62
  --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
59
63
  --default-transition-duration: 150ms;
@@ -1426,6 +1430,9 @@
1426
1430
  .text-yellow-600 {
1427
1431
  color: var(--color-yellow-600);
1428
1432
  }
1433
+ .lowercase {
1434
+ text-transform: lowercase;
1435
+ }
1429
1436
  .underline {
1430
1437
  text-decoration-line: underline;
1431
1438
  }
@@ -3592,6 +3599,46 @@
3592
3599
  [data-slot='button'][data-color='gold'] {
3593
3600
  --btn-bg: #f59e0b;
3594
3601
  }
3602
+ [data-slot='col'] {
3603
+ flex-basis: calc(var(--col-span-xs) / 24 * 100%);
3604
+ max-width: calc(var(--col-span-xs) / 24 * 100%);
3605
+ margin-left: calc(var(--col-offset-xs, 0) / 24 * 100%);
3606
+ }
3607
+ @media (width >= 40rem) {
3608
+ [data-slot='col'] {
3609
+ flex-basis: calc(var(--col-span-sm) / 24 * 100%);
3610
+ max-width: calc(var(--col-span-sm) / 24 * 100%);
3611
+ margin-left: calc(var(--col-offset-sm, 0) / 24 * 100%);
3612
+ }
3613
+ }
3614
+ @media (width >= 48rem) {
3615
+ [data-slot='col'] {
3616
+ flex-basis: calc(var(--col-span-md) / 24 * 100%);
3617
+ max-width: calc(var(--col-span-md) / 24 * 100%);
3618
+ margin-left: calc(var(--col-offset-md, 0) / 24 * 100%);
3619
+ }
3620
+ }
3621
+ @media (width >= 64rem) {
3622
+ [data-slot='col'] {
3623
+ flex-basis: calc(var(--col-span-lg) / 24 * 100%);
3624
+ max-width: calc(var(--col-span-lg) / 24 * 100%);
3625
+ margin-left: calc(var(--col-offset-lg, 0) / 24 * 100%);
3626
+ }
3627
+ }
3628
+ @media (width >= 80rem) {
3629
+ [data-slot='col'] {
3630
+ flex-basis: calc(var(--col-span-xl) / 24 * 100%);
3631
+ max-width: calc(var(--col-span-xl) / 24 * 100%);
3632
+ margin-left: calc(var(--col-offset-xl, 0) / 24 * 100%);
3633
+ }
3634
+ }
3635
+ @media (width >= 96rem) {
3636
+ [data-slot='col'] {
3637
+ flex-basis: calc(var(--col-span-2xl) / 24 * 100%);
3638
+ max-width: calc(var(--col-span-2xl) / 24 * 100%);
3639
+ margin-left: calc(var(--col-offset-2xl, 0) / 24 * 100%);
3640
+ }
3641
+ }
3595
3642
  }
3596
3643
  @property --tw-translate-x {
3597
3644
  syntax: "*";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jbpark/ui-kit",
3
- "version": "4.1.0",
3
+ "version": "5.1.0",
4
4
  "description": "Modern React UI component library built with TypeScript, Tailwind CSS, and Radix UI. Featuring atoms, molecules, organisms and layout templates for building beautiful interfaces.",
5
5
  "keywords": [
6
6
  "react",
@@ -131,6 +131,7 @@
131
131
  "@radix-ui/react-accordion": "^1.2.12",
132
132
  "@radix-ui/react-checkbox": "^1.3.3",
133
133
  "@radix-ui/react-dialog": "^1.1.15",
134
+ "@radix-ui/react-direction": "^1.1.1",
134
135
  "@radix-ui/react-label": "^2.1.8",
135
136
  "@radix-ui/react-popover": "^1.1.15",
136
137
  "@radix-ui/react-progress": "^1.1.7",