@prokodo/ui 1.0.6 → 1.0.8

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 (69) hide show
  1. package/README.md +43 -18
  2. package/dist/components/RTE/RTE.js +4 -0
  3. package/dist/components/RTE/RTE.lazy.js +4 -1
  4. package/dist/components/accordion/Accordion.css +18 -0
  5. package/dist/components/accordion/Accordion.module.css +18 -0
  6. package/dist/components/autocomplete/Autocomplete.css +19 -0
  7. package/dist/components/autocomplete/Autocomplete.module.css +19 -0
  8. package/dist/components/button/Button.css +11 -0
  9. package/dist/components/button/Button.module.css +11 -0
  10. package/dist/components/card/Card.css +13 -0
  11. package/dist/components/card/Card.module.css +13 -0
  12. package/dist/components/carousel/Carousel.css +8 -0
  13. package/dist/components/carousel/Carousel.module.css +8 -0
  14. package/dist/components/checkbox/Checkbox.css +16 -0
  15. package/dist/components/checkbox/Checkbox.module.css +16 -0
  16. package/dist/components/datePicker/DatePicker.css +41 -0
  17. package/dist/components/datePicker/DatePicker.module.css +41 -0
  18. package/dist/components/dialog/Dialog.css +11 -0
  19. package/dist/components/dialog/Dialog.module.css +11 -0
  20. package/dist/components/drawer/Drawer.css +9 -0
  21. package/dist/components/drawer/Drawer.module.css +9 -0
  22. package/dist/components/dynamic-list/DynamicList.css +12 -0
  23. package/dist/components/dynamic-list/DynamicList.module.css +12 -0
  24. package/dist/components/grid/Grid.css +4 -0
  25. package/dist/components/grid/Grid.module.css +4 -0
  26. package/dist/components/image-text/ImageText.css +4 -0
  27. package/dist/components/image-text/ImageText.module.css +4 -0
  28. package/dist/components/input/Input.css +20 -0
  29. package/dist/components/input/Input.module.css +20 -0
  30. package/dist/components/inputOTP/InputOTP.css +8 -0
  31. package/dist/components/inputOTP/InputOTP.module.css +8 -0
  32. package/dist/components/label/Label.css +8 -0
  33. package/dist/components/label/Label.module.css +8 -0
  34. package/dist/components/link/Link.css +13 -0
  35. package/dist/components/link/Link.module.css +13 -0
  36. package/dist/components/pagination/Pagination.css +10 -0
  37. package/dist/components/pagination/Pagination.module.css +10 -0
  38. package/dist/components/progressBar/ProgressBar.css +8 -0
  39. package/dist/components/progressBar/ProgressBar.module.css +8 -0
  40. package/dist/components/rating/Rating.css +15 -0
  41. package/dist/components/rating/Rating.module.css +15 -0
  42. package/dist/components/rich-text/RichText.css +18 -0
  43. package/dist/components/rich-text/RichText.module.css +18 -0
  44. package/dist/components/select/Select.css +23 -0
  45. package/dist/components/select/Select.module.css +23 -0
  46. package/dist/components/sidenav/SideNav.css +20 -0
  47. package/dist/components/sidenav/SideNav.module.css +20 -0
  48. package/dist/components/skeleton/Skeleton.css +8 -0
  49. package/dist/components/skeleton/Skeleton.module.css +8 -0
  50. package/dist/components/slider/Slider.css +19 -0
  51. package/dist/components/slider/Slider.module.css +19 -0
  52. package/dist/components/snackbar/Snackbar.css +27 -0
  53. package/dist/components/snackbar/Snackbar.module.css +27 -0
  54. package/dist/components/stepper/Stepper.css +9 -0
  55. package/dist/components/stepper/Stepper.module.css +9 -0
  56. package/dist/components/switch/Switch.css +16 -0
  57. package/dist/components/switch/Switch.module.css +16 -0
  58. package/dist/components/table/Table.css +11 -0
  59. package/dist/components/table/Table.module.css +11 -0
  60. package/dist/components/tabs/Tabs.css +18 -0
  61. package/dist/components/tabs/Tabs.module.css +18 -0
  62. package/dist/components/tooltip/Tooltip.css +25 -0
  63. package/dist/components/tooltip/Tooltip.module.css +25 -0
  64. package/dist/constants/project.js +1 -1
  65. package/dist/helpers/createIsland.js +7 -3
  66. package/dist/theme-tokens.css +0 -352
  67. package/dist/theme.css +442 -352
  68. package/dist/tsconfig.build.tsbuildinfo +1 -1
  69. package/package.json +1 -1
package/README.md CHANGED
@@ -39,30 +39,55 @@
39
39
 
40
40
  ## ✨ Features
41
41
 
42
- - ✨ **Adaptive Island Components (AIC)**: A rendering strategy where each component loads only the JavaScript it needs when needed.
43
- - ⚡️ **Modern stack**: Vite, React 19, TypeScript, and SCSS Modules
44
- - 💅 **Design consistency**: Theming via design tokens and BEM-style naming
45
- - 🧩 **Component-rich**: 50+ reusable UI components
46
- - 🧪 **Reliable**: Fully tested with Jest and Testing Library
47
- - 📚 **Storybook**: Explore the components at [ui.prokodo.com](https://ui.prokodo.com)
48
- - 📦 **Ready-to-install**: Distributed via npm under the Apache-2.0 license — free for production use
49
- - 🚀 **Optimized for Next.js 1316 out of the box** (App Router, React Server Components)
50
- - ⚡ **Turbopack compatible** (no config required)
51
- - 🔗 **Framework adapters** via `UIRuntimeProvider` for `next/link` & `next/image`
42
+ - ✨ **AIC architecture**: Components are split into server, client, and lazy variants so JS is loaded only where interaction is needed.
43
+ - ⚡️ **Modern stack**: Vite, React 19, TypeScript, and SCSS Modules.
44
+ - 💅 **Design consistency**: Token-driven styling via CSS custom properties (`--pk-*`).
45
+ - 🧩 **Component-rich**: 52 production-ready components across multiple categories.
46
+ - 🧪 **Reliable**: Tested with Jest, Testing Library, and Cypress component tests.
47
+ - 📚 **Storybook**: Explore live component examples at [ui.prokodo.com/storybook](https://ui.prokodo.com/storybook).
48
+ - 📦 **Ready to install**: Published on npm under Apache-2.0 for production use.
49
+ - 🚀 **Built for Next.js 13-16**: App Router and React Server Component workflows out of the box.
50
+ - ⚡ **Turbopack friendly**: Works without custom bundler configuration.
51
+ - 🔗 **Framework adapters**: `UIRuntimeProvider` integrates routing/image primitives (for example `next/link` and `next/image`).
52
52
 
53
53
  ## ⚡ Lightweight by Design
54
54
 
55
- Adaptive Island Components (AIC) are fully modular and optimized for modern frameworks (Next.js, Remix, etc.).
56
- Each component is built for **lazy loading**, works seamlessly with **React Server Components (RSC)**, and can be **tree-shaken** out when unused.
55
+ prokodo UI is designed to stay lean in SSR-first architectures by combining split component entry points with static CSS output.
57
56
 
58
- **Total bundle (all components): ~195 kB gzipped**
57
+ - **Component-level entry points** for server, client, and lazy usage
58
+ - **No CSS-in-JS runtime injection** in the default styling model
59
+ - **Tree-shakable imports** with per-component CSS/JS separation
60
+ - **RSC-friendly usage model** for Next.js App Router workflows
59
61
 
60
- - **Only 5–20 kB** are typically loaded per page
61
- - **Zero-JS on initial render** for most components
62
- - **Hydration is deferred** until interaction or visibility
63
- - Shared styles are minimal: **only ~16.5 kB gzipped**
62
+ **Measured production baseline (current build):**
64
63
 
65
- This makes `@prokodo/ui` ideal for modern SSR apps using Next.js or Remix, with excellent Time-to-Interactive (TTI) and Core Web Vitals.
64
+ - `theme.css`: ~34 KB gzip
65
+ - `theme-tokens.css`: ~3 KB gzip
66
+ - Additional component CSS/JS depends on what your app imports
67
+
68
+ Real-world payload varies by route composition, import discipline, and rendering strategy.
69
+
70
+ ---
71
+
72
+ ## 🎯 How It Compares
73
+
74
+ | Aspect | prokodo UI | Material-UI (MUI) | Radix UI | Shadcn/ui |
75
+ | --------------------- | -------------------------------------------- | -------------------------------------- | ---------------------------------------- | ------------------------------------- |
76
+ | **RSC Readiness** | ✅ Native App Router fit | ⚠️ Works, but setup/runtime is heavier | ✅ Good fit, mostly low-level primitives | ✅ Good App Router workflow |
77
+ | **Styling Runtime** | ✅ No CSS-in-JS runtime | ⚠️ Emotion runtime by default | ✅ No styling runtime (unstyled) | ✅ Static styles in app code |
78
+ | **Baseline CSS** | ~34 KB (measured production baseline) | Project-dependent | Project-dependent | Project-dependent |
79
+ | **Tree-shaking** | ✅ Strong by design (component-level CSS/JS) | ✅ Good with strict import discipline | ✅ Strong with granular packages | ✅ Strong (copy only what you use) |
80
+ | **Maintenance Model** | ✅ Versioned npm library | Versioned npm library | Versioned npm library | Source ownership in each app |
81
+ | **Best Fit** | Next.js/Remix SSR + Core Web Vitals | Teams standardized on Material Design | Teams building custom primitives | Teams preferring copy-paste ownership |
82
+
83
+ **Recommendation:**
84
+
85
+ - Choose **prokodo UI** when performance, SSR clarity, and a ready-to-use component system are priorities.
86
+ - Consider alternatives only when your project explicitly needs their model (Material Design lock-in, fully headless primitives, or copy-paste ownership).
87
+
88
+ ---
89
+
90
+ **Data note:** prokodo-ui bundle size (34 KB) is measured from production build. Other library sizes depend heavily on import patterns, tree-shaking, and individual project configuration.
66
91
 
67
92
  ---
68
93
 
@@ -8,6 +8,10 @@ const RTE = createIsland({
8
8
  loadLazy: (
9
9
  /* istanbul ignore next */
10
10
  /* @__PURE__ */ __name(() => import("./RTE.lazy.js"), "loadLazy")
11
+ ),
12
+ isInteractive: (
13
+ /* istanbul ignore next */
14
+ /* @__PURE__ */ __name(() => true, "isInteractive")
11
15
  )
12
16
  });
13
17
  export {
@@ -1,11 +1,14 @@
1
1
  "use client";
2
+ var __defProp = Object.defineProperty;
3
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
2
4
  import { createLazyWrapper } from "../../helpers/createLazyWrapper.js";
3
5
  import RTEClient from "./RTE.client.js";
4
6
  import RTEServer from "./RTE.server.js";
5
7
  const RTE_lazy = createLazyWrapper({
6
8
  name: "RTE",
7
9
  Client: RTEClient,
8
- Server: RTEServer
10
+ Server: RTEServer,
11
+ isInteractive: /* @__PURE__ */ __name(() => true, "isInteractive")
9
12
  });
10
13
  export {
11
14
  RTE_lazy as default
@@ -128,6 +128,24 @@
128
128
  * This mixin specifies basic text-styles for components that render a richtext
129
129
  * content.
130
130
  */
131
+ :root {
132
+ --pk-accordion-radius: var(--pk-radius-md);
133
+ --pk-accordion-border: var(--pk-color-border);
134
+ --pk-accordion-border-focus: var(--pk-color-brand);
135
+ --pk-accordion-shadow: var(--pk-shadow-sm);
136
+ --pk-accordion-header-bg: var(--pk-color-surface);
137
+ --pk-accordion-content-bg: var(--pk-color-surface);
138
+ --pk-accordion-actions-bg: var(--pk-color-surface-raised);
139
+ --pk-accordion-actions-border: var(--pk-color-border);
140
+ --pk-accordion-fg: var(--pk-color-fg);
141
+ --pk-accordion-padding-x: var(--pk-space-lg);
142
+ --pk-accordion-padding-y: var(--pk-space-md);
143
+ --pk-accordion-gradient-from: var(--pk-color-brand);
144
+ --pk-accordion-gradient-to: var(--pk-color-accent);
145
+ --pk-accordion-item-tint: var(--pk-color-brand);
146
+ --pk-accordion-shadow-color: rgba(0, 0, 0, 0.1);
147
+ }
148
+
131
149
  @keyframes accordionBorderShift {
132
150
  from {
133
151
  background-position: 0 0, 0% 0;
@@ -124,6 +124,24 @@
124
124
  * This mixin specifies basic text-styles for components that render a richtext
125
125
  * content.
126
126
  */
127
+ :root {
128
+ --pk-accordion-radius: var(--pk-radius-md);
129
+ --pk-accordion-border: var(--pk-color-border);
130
+ --pk-accordion-border-focus: var(--pk-color-brand);
131
+ --pk-accordion-shadow: var(--pk-shadow-sm);
132
+ --pk-accordion-header-bg: var(--pk-color-surface);
133
+ --pk-accordion-content-bg: var(--pk-color-surface);
134
+ --pk-accordion-actions-bg: var(--pk-color-surface-raised);
135
+ --pk-accordion-actions-border: var(--pk-color-border);
136
+ --pk-accordion-fg: var(--pk-color-fg);
137
+ --pk-accordion-padding-x: var(--pk-space-lg);
138
+ --pk-accordion-padding-y: var(--pk-space-md);
139
+ --pk-accordion-gradient-from: var(--pk-color-brand);
140
+ --pk-accordion-gradient-to: var(--pk-color-accent);
141
+ --pk-accordion-item-tint: var(--pk-color-brand);
142
+ --pk-accordion-shadow-color: rgba(0, 0, 0, 0.1);
143
+ }
144
+
127
145
  @keyframes accordionBorderShift {
128
146
  from {
129
147
  background-position: 0 0, 0% 0;
@@ -126,6 +126,25 @@
126
126
  * This mixin specifies basic text-styles for components that render a richtext
127
127
  * content.
128
128
  */
129
+ :root {
130
+ --pk-autocomplete-bg: var(--pk-color-surface);
131
+ --pk-autocomplete-fg: var(--pk-color-fg);
132
+ --pk-autocomplete-fg-muted: var(--pk-color-muted);
133
+ --pk-autocomplete-radius: var(--pk-radius-pill);
134
+ --pk-autocomplete-shadow-color: rgba(0, 0, 0, 0.1);
135
+ --pk-autocomplete-shadow-color-focus: color-mix(in srgb, var(--pk-color-brand) 30%, transparent);
136
+ --pk-autocomplete-gradient-from: var(--pk-color-brand);
137
+ --pk-autocomplete-gradient-to: var(--pk-color-accent);
138
+ --pk-autocomplete-shadow: var(--pk-shadow-lg);
139
+ --pk-autocomplete-item-hover-bg: var(--pk-palette-primary-50);
140
+ --pk-autocomplete-item-active-bg: var(--pk-palette-primary-100);
141
+ --pk-autocomplete-state-bg: var(--pk-color-surface);
142
+ --pk-autocomplete-state-fg: var(--pk-palette-grey-700);
143
+ --pk-autocomplete-dropdown-bg: var(--pk-color-surface-raised);
144
+ --pk-autocomplete-padding-x: var(--pk-space-md);
145
+ --pk-autocomplete-padding-y: var(--pk-space-sm);
146
+ }
147
+
129
148
  .prokodo-Autocomplete {
130
149
  position: relative;
131
150
  display: flex;
@@ -124,6 +124,25 @@
124
124
  * This mixin specifies basic text-styles for components that render a richtext
125
125
  * content.
126
126
  */
127
+ :root {
128
+ --pk-autocomplete-bg: var(--pk-color-surface);
129
+ --pk-autocomplete-fg: var(--pk-color-fg);
130
+ --pk-autocomplete-fg-muted: var(--pk-color-muted);
131
+ --pk-autocomplete-radius: var(--pk-radius-pill);
132
+ --pk-autocomplete-shadow-color: rgba(0, 0, 0, 0.1);
133
+ --pk-autocomplete-shadow-color-focus: color-mix(in srgb, var(--pk-color-brand) 30%, transparent);
134
+ --pk-autocomplete-gradient-from: var(--pk-color-brand);
135
+ --pk-autocomplete-gradient-to: var(--pk-color-accent);
136
+ --pk-autocomplete-shadow: var(--pk-shadow-lg);
137
+ --pk-autocomplete-item-hover-bg: var(--pk-palette-primary-50);
138
+ --pk-autocomplete-item-active-bg: var(--pk-palette-primary-100);
139
+ --pk-autocomplete-state-bg: var(--pk-color-surface);
140
+ --pk-autocomplete-state-fg: var(--pk-palette-grey-700);
141
+ --pk-autocomplete-dropdown-bg: var(--pk-color-surface-raised);
142
+ --pk-autocomplete-padding-x: var(--pk-space-md);
143
+ --pk-autocomplete-padding-y: var(--pk-space-sm);
144
+ }
145
+
127
146
  .prokodo-Autocomplete {
128
147
  position: relative;
129
148
  display: flex;
@@ -128,6 +128,17 @@
128
128
  * This mixin specifies basic text-styles for components that render a richtext
129
129
  * content.
130
130
  */
131
+ :root {
132
+ --pk-button-bg: var(--pk-color-surface-raised);
133
+ --pk-button-fg: var(--pk-color-fg);
134
+ --pk-button-radius: var(--pk-radius-pill);
135
+ --pk-button-padding-x: var(--pk-space-xl);
136
+ --pk-button-padding-y: 0.875rem;
137
+ --pk-button-shadow: var(--pk-shadow-sm);
138
+ --pk-button-disabled-bg: var(--pk-color-border);
139
+ --pk-button-disabled-fg: var(--pk-color-muted);
140
+ }
141
+
131
142
  .prokodo-Button {
132
143
  display: inline-flex;
133
144
  align-items: center;
@@ -124,6 +124,17 @@
124
124
  * This mixin specifies basic text-styles for components that render a richtext
125
125
  * content.
126
126
  */
127
+ :root {
128
+ --pk-button-bg: var(--pk-color-surface-raised);
129
+ --pk-button-fg: var(--pk-color-fg);
130
+ --pk-button-radius: var(--pk-radius-pill);
131
+ --pk-button-padding-x: var(--pk-space-xl);
132
+ --pk-button-padding-y: 0.875rem;
133
+ --pk-button-shadow: var(--pk-shadow-sm);
134
+ --pk-button-disabled-bg: var(--pk-color-border);
135
+ --pk-button-disabled-fg: var(--pk-color-muted);
136
+ }
137
+
127
138
  .prokodo-Button {
128
139
  display: inline-flex;
129
140
  align-items: center;
@@ -131,6 +131,19 @@
131
131
  * This mixin specifies basic text-styles for components that render a richtext
132
132
  * content.
133
133
  */
134
+ :root {
135
+ --pk-card-bg: var(--pk-color-surface);
136
+ --pk-card-fg: var(--pk-color-fg);
137
+ --pk-card-radius: var(--pk-radius-lg);
138
+ --pk-card-shadow: var(--pk-shadow-sm);
139
+ --pk-card-padding: var(--pk-space-xl);
140
+ --pk-card-inherit-bg: var(--pk-color-surface-raised);
141
+ --pk-card-panel-bg: rgba(255, 255, 255, 0.03);
142
+ --pk-card-panel-border: rgba(255, 255, 255, 0.10);
143
+ --pk-card-panel-light-bg: var(--pk-color-surface);
144
+ --pk-card-panel-light-border: rgba(0, 0, 0, 0.08);
145
+ }
146
+
134
147
  @keyframes Card_fadeInAnimation {
135
148
  0% {
136
149
  opacity: 0;
@@ -124,6 +124,19 @@
124
124
  * This mixin specifies basic text-styles for components that render a richtext
125
125
  * content.
126
126
  */
127
+ :root {
128
+ --pk-card-bg: var(--pk-color-surface);
129
+ --pk-card-fg: var(--pk-color-fg);
130
+ --pk-card-radius: var(--pk-radius-lg);
131
+ --pk-card-shadow: var(--pk-shadow-sm);
132
+ --pk-card-padding: var(--pk-space-xl);
133
+ --pk-card-inherit-bg: var(--pk-color-surface-raised);
134
+ --pk-card-panel-bg: rgba(255, 255, 255, 0.03);
135
+ --pk-card-panel-border: rgba(255, 255, 255, 0.10);
136
+ --pk-card-panel-light-bg: var(--pk-color-surface);
137
+ --pk-card-panel-light-border: rgba(0, 0, 0, 0.08);
138
+ }
139
+
127
140
  @keyframes Card_fadeInAnimation {
128
141
  0% {
129
142
  opacity: 0;
@@ -126,6 +126,14 @@
126
126
  * This mixin specifies basic text-styles for components that render a richtext
127
127
  * content.
128
128
  */
129
+ :root {
130
+ --pk-carousel-overlay-bg: color-mix(in srgb, var(--pk-palette-grey-900) 70%, transparent);
131
+ --pk-carousel-dot-active-bg: var(--pk-color-fg);
132
+ --pk-carousel-button-padding: var(--pk-space-md);
133
+ --pk-carousel-dots-mt: 0;
134
+ --pk-carousel-controls-mt: var(--pk-space-lg);
135
+ }
136
+
129
137
  .prokodo-Carousel {
130
138
  position: relative;
131
139
  width: 100%;
@@ -124,6 +124,14 @@
124
124
  * This mixin specifies basic text-styles for components that render a richtext
125
125
  * content.
126
126
  */
127
+ :root {
128
+ --pk-carousel-overlay-bg: color-mix(in srgb, var(--pk-palette-grey-900) 70%, transparent);
129
+ --pk-carousel-dot-active-bg: var(--pk-color-fg);
130
+ --pk-carousel-button-padding: var(--pk-space-md);
131
+ --pk-carousel-dots-mt: 0;
132
+ --pk-carousel-controls-mt: var(--pk-space-lg);
133
+ }
134
+
127
135
  .prokodo-Carousel {
128
136
  position: relative;
129
137
  width: 100%;
@@ -124,6 +124,22 @@
124
124
  * This mixin specifies basic text-styles for components that render a richtext
125
125
  * content.
126
126
  */
127
+ :root {
128
+ --pk-checkbox-size: 1.125rem;
129
+ --pk-checkbox-radius: var(--pk-radius-md);
130
+ --pk-checkbox-control-radius: 6px;
131
+ --pk-checkbox-control-border: var(--pk-palette-grey-200);
132
+ --pk-checkbox-control-bg: var(--pk-palette-white);
133
+ --pk-checkbox-control-checked-border: transparent;
134
+ --pk-checkbox-gradient-from: var(--pk-color-brand);
135
+ --pk-checkbox-gradient-to: var(--pk-color-accent);
136
+ --pk-checkbox-shadow-color: color-mix(in srgb, var(--pk-color-brand) 30%, transparent);
137
+ --pk-checkbox-fg: var(--pk-color-fg);
138
+ --pk-checkbox-fg-muted: var(--pk-color-muted);
139
+ --pk-checkbox-error-fg: var(--pk-color-error);
140
+ --pk-checkbox-card-bg: var(--pk-color-surface);
141
+ }
142
+
127
143
  .prokodo-Checkbox {
128
144
  display: inline-flex;
129
145
  align-items: flex-start;
@@ -124,6 +124,22 @@
124
124
  * This mixin specifies basic text-styles for components that render a richtext
125
125
  * content.
126
126
  */
127
+ :root {
128
+ --pk-checkbox-size: 1.125rem;
129
+ --pk-checkbox-radius: var(--pk-radius-md);
130
+ --pk-checkbox-control-radius: 6px;
131
+ --pk-checkbox-control-border: var(--pk-palette-grey-200);
132
+ --pk-checkbox-control-bg: var(--pk-palette-white);
133
+ --pk-checkbox-control-checked-border: transparent;
134
+ --pk-checkbox-gradient-from: var(--pk-color-brand);
135
+ --pk-checkbox-gradient-to: var(--pk-color-accent);
136
+ --pk-checkbox-shadow-color: color-mix(in srgb, var(--pk-color-brand) 30%, transparent);
137
+ --pk-checkbox-fg: var(--pk-color-fg);
138
+ --pk-checkbox-fg-muted: var(--pk-color-muted);
139
+ --pk-checkbox-error-fg: var(--pk-color-error);
140
+ --pk-checkbox-card-bg: var(--pk-color-surface);
141
+ }
142
+
127
143
  .prokodo-Checkbox {
128
144
  display: inline-flex;
129
145
  align-items: flex-start;
@@ -126,6 +126,47 @@
126
126
  * This mixin specifies basic text-styles for components that render a richtext
127
127
  * content.
128
128
  */
129
+ :root {
130
+ --pk-dp-trigger-bg: var(--pk-color-surface);
131
+ --pk-dp-trigger-fg: var(--pk-color-fg);
132
+ --pk-dp-trigger-fg-muted: var(--pk-color-muted);
133
+ --pk-dp-trigger-border: var(--pk-color-border);
134
+ --pk-dp-trigger-radius: var(--pk-radius-pill);
135
+ --pk-dp-trigger-padding-x: var(--pk-space-lg);
136
+ --pk-dp-trigger-padding-y: 0.875rem;
137
+ --pk-dp-trigger-label-fg: var(--pk-color-muted);
138
+ --pk-dp-trigger-label-float-fg: var(--pk-color-brand);
139
+ --pk-dp-dialog-bg: var(--pk-color-surface);
140
+ --pk-dp-dialog-border: var(--pk-color-border);
141
+ --pk-dp-dialog-radius: var(--pk-radius-lg);
142
+ --pk-dp-dialog-shadow: var(--pk-shadow-lg);
143
+ --pk-dp-dialog-padding: var(--pk-space-md);
144
+ --pk-dp-dialog-min-width: 17rem;
145
+ --pk-dp-header-fg: var(--pk-color-fg);
146
+ --pk-dp-nav-fg: var(--pk-color-muted);
147
+ --pk-dp-nav-hover-bg: var(--pk-color-border);
148
+ --pk-dp-nav-radius: var(--pk-radius-circle);
149
+ --pk-dp-weekday-fg: var(--pk-color-muted);
150
+ --pk-dp-day-fg: var(--pk-color-fg);
151
+ --pk-dp-day-radius: var(--pk-radius-circle);
152
+ --pk-dp-day-hover-bg: color-mix(in srgb, var(--pk-color-border) 60%, transparent);
153
+ --pk-dp-day-outside-fg: color-mix(in srgb, var(--pk-color-muted) 50%, transparent);
154
+ --pk-dp-day-disabled-fg: color-mix(in srgb, var(--pk-color-muted) 40%, transparent);
155
+ --pk-dp-day-today-ring: var(--pk-color-brand);
156
+ --pk-dp-gradient-from: var(--pk-color-brand);
157
+ --pk-dp-gradient-to: var(--pk-color-accent);
158
+ --pk-dp-shadow-color: color-mix(in srgb, var(--pk-color-brand) 30%, transparent);
159
+ --pk-dp-time-label-fg: var(--pk-color-fg);
160
+ --pk-dp-time-select-bg: var(--pk-color-surface);
161
+ --pk-dp-time-select-fg: var(--pk-color-fg);
162
+ --pk-dp-time-select-border: var(--pk-color-border);
163
+ --pk-dp-time-select-radius: var(--pk-radius-md);
164
+ --pk-dp-time-sep-fg: var(--pk-color-muted);
165
+ --pk-dp-footer-border: var(--pk-color-border);
166
+ --pk-dp-footer-ghost-fg: var(--pk-color-muted);
167
+ --pk-dp-footer-ghost-hover-fg: var(--pk-color-fg);
168
+ }
169
+
129
170
  @keyframes dpDialogIn {
130
171
  from {
131
172
  opacity: 0;
@@ -124,6 +124,47 @@
124
124
  * This mixin specifies basic text-styles for components that render a richtext
125
125
  * content.
126
126
  */
127
+ :root {
128
+ --pk-dp-trigger-bg: var(--pk-color-surface);
129
+ --pk-dp-trigger-fg: var(--pk-color-fg);
130
+ --pk-dp-trigger-fg-muted: var(--pk-color-muted);
131
+ --pk-dp-trigger-border: var(--pk-color-border);
132
+ --pk-dp-trigger-radius: var(--pk-radius-pill);
133
+ --pk-dp-trigger-padding-x: var(--pk-space-lg);
134
+ --pk-dp-trigger-padding-y: 0.875rem;
135
+ --pk-dp-trigger-label-fg: var(--pk-color-muted);
136
+ --pk-dp-trigger-label-float-fg: var(--pk-color-brand);
137
+ --pk-dp-dialog-bg: var(--pk-color-surface);
138
+ --pk-dp-dialog-border: var(--pk-color-border);
139
+ --pk-dp-dialog-radius: var(--pk-radius-lg);
140
+ --pk-dp-dialog-shadow: var(--pk-shadow-lg);
141
+ --pk-dp-dialog-padding: var(--pk-space-md);
142
+ --pk-dp-dialog-min-width: 17rem;
143
+ --pk-dp-header-fg: var(--pk-color-fg);
144
+ --pk-dp-nav-fg: var(--pk-color-muted);
145
+ --pk-dp-nav-hover-bg: var(--pk-color-border);
146
+ --pk-dp-nav-radius: var(--pk-radius-circle);
147
+ --pk-dp-weekday-fg: var(--pk-color-muted);
148
+ --pk-dp-day-fg: var(--pk-color-fg);
149
+ --pk-dp-day-radius: var(--pk-radius-circle);
150
+ --pk-dp-day-hover-bg: color-mix(in srgb, var(--pk-color-border) 60%, transparent);
151
+ --pk-dp-day-outside-fg: color-mix(in srgb, var(--pk-color-muted) 50%, transparent);
152
+ --pk-dp-day-disabled-fg: color-mix(in srgb, var(--pk-color-muted) 40%, transparent);
153
+ --pk-dp-day-today-ring: var(--pk-color-brand);
154
+ --pk-dp-gradient-from: var(--pk-color-brand);
155
+ --pk-dp-gradient-to: var(--pk-color-accent);
156
+ --pk-dp-shadow-color: color-mix(in srgb, var(--pk-color-brand) 30%, transparent);
157
+ --pk-dp-time-label-fg: var(--pk-color-fg);
158
+ --pk-dp-time-select-bg: var(--pk-color-surface);
159
+ --pk-dp-time-select-fg: var(--pk-color-fg);
160
+ --pk-dp-time-select-border: var(--pk-color-border);
161
+ --pk-dp-time-select-radius: var(--pk-radius-md);
162
+ --pk-dp-time-sep-fg: var(--pk-color-muted);
163
+ --pk-dp-footer-border: var(--pk-color-border);
164
+ --pk-dp-footer-ghost-fg: var(--pk-color-muted);
165
+ --pk-dp-footer-ghost-hover-fg: var(--pk-color-fg);
166
+ }
167
+
127
168
  @keyframes dpDialogIn {
128
169
  from {
129
170
  opacity: 0;
@@ -126,6 +126,17 @@
126
126
  * This mixin specifies basic text-styles for components that render a richtext
127
127
  * content.
128
128
  */
129
+ :root {
130
+ --pk-dialog-bg: var(--pk-color-surface);
131
+ --pk-dialog-fg: var(--pk-color-fg);
132
+ --pk-dialog-radius: var(--pk-radius-md);
133
+ --pk-dialog-shadow: var(--pk-shadow-lg);
134
+ --pk-dialog-padding-x: var(--pk-space-lg);
135
+ --pk-dialog-padding-y: var(--pk-space-xl);
136
+ --pk-dialog-header-fg: var(--pk-color-fg);
137
+ --pk-dialog-close-fg: var(--pk-palette-grey-500);
138
+ }
139
+
129
140
  @keyframes Dialog_fadeIn {
130
141
  from {
131
142
  opacity: 0;
@@ -124,6 +124,17 @@
124
124
  * This mixin specifies basic text-styles for components that render a richtext
125
125
  * content.
126
126
  */
127
+ :root {
128
+ --pk-dialog-bg: var(--pk-color-surface);
129
+ --pk-dialog-fg: var(--pk-color-fg);
130
+ --pk-dialog-radius: var(--pk-radius-md);
131
+ --pk-dialog-shadow: var(--pk-shadow-lg);
132
+ --pk-dialog-padding-x: var(--pk-space-lg);
133
+ --pk-dialog-padding-y: var(--pk-space-xl);
134
+ --pk-dialog-header-fg: var(--pk-color-fg);
135
+ --pk-dialog-close-fg: var(--pk-palette-grey-500);
136
+ }
137
+
127
138
  @keyframes Dialog_fadeIn {
128
139
  from {
129
140
  opacity: 0;
@@ -127,6 +127,15 @@
127
127
  * This mixin specifies basic text-styles for components that render a richtext
128
128
  * content.
129
129
  */
130
+ :root {
131
+ --pk-drawer-bg: var(--pk-color-surface);
132
+ --pk-drawer-border: var(--pk-color-border);
133
+ --pk-drawer-shadow: var(--elevation-1);
134
+ --pk-drawer-backdrop-bg: rgba(0, 0, 0, 0.5);
135
+ --pk-drawer-z-index: 1302;
136
+ --pk-drawer-padding: var(--pk-space-md);
137
+ }
138
+
130
139
  .prokodo-Drawer {
131
140
  /* Backdrop (unchanged, fades in) */
132
141
  /* Container (slide + fade via transitions) */
@@ -124,6 +124,15 @@
124
124
  * This mixin specifies basic text-styles for components that render a richtext
125
125
  * content.
126
126
  */
127
+ :root {
128
+ --pk-drawer-bg: var(--pk-color-surface);
129
+ --pk-drawer-border: var(--pk-color-border);
130
+ --pk-drawer-shadow: var(--elevation-1);
131
+ --pk-drawer-backdrop-bg: rgba(0, 0, 0, 0.5);
132
+ --pk-drawer-z-index: 1302;
133
+ --pk-drawer-padding: var(--pk-space-md);
134
+ }
135
+
127
136
  .prokodo-Drawer {
128
137
  /* Backdrop (unchanged, fades in) */
129
138
  /* Container (slide + fade via transitions) */
@@ -130,6 +130,18 @@
130
130
  * This mixin specifies basic text-styles for components that render a richtext
131
131
  * content.
132
132
  */
133
+ :root {
134
+ --pk-dynamic-list-label-mb: var(--pk-space-md);
135
+ --pk-dynamic-list-gap: var(--pk-space-lg);
136
+ --pk-dynamic-list-field-mb: var(--pk-space-lg);
137
+ --pk-dynamic-list-delete-mt: var(--pk-space-sm);
138
+ --pk-dynamic-list-helper-fg: var(--pk-palette-grey-300);
139
+ --pk-dynamic-list-helper-pl: var(--pk-space-xl);
140
+ --pk-dynamic-list-helper-pt: var(--pk-space-md);
141
+ --pk-dynamic-list-helper-w: 80%;
142
+ --pk-dynamic-list-error-fg: var(--pk-color-error);
143
+ }
144
+
133
145
  .prokodo-DynamicList {
134
146
  border: none;
135
147
  padding: 0;
@@ -125,6 +125,18 @@
125
125
  * This mixin specifies basic text-styles for components that render a richtext
126
126
  * content.
127
127
  */
128
+ :root {
129
+ --pk-dynamic-list-label-mb: var(--pk-space-md);
130
+ --pk-dynamic-list-gap: var(--pk-space-lg);
131
+ --pk-dynamic-list-field-mb: var(--pk-space-lg);
132
+ --pk-dynamic-list-delete-mt: var(--pk-space-sm);
133
+ --pk-dynamic-list-helper-fg: var(--pk-palette-grey-300);
134
+ --pk-dynamic-list-helper-pl: var(--pk-space-xl);
135
+ --pk-dynamic-list-helper-pt: var(--pk-space-md);
136
+ --pk-dynamic-list-helper-w: 80%;
137
+ --pk-dynamic-list-error-fg: var(--pk-color-error);
138
+ }
139
+
128
140
  .prokodo-DynamicList {
129
141
  border: none;
130
142
  padding: 0;
@@ -124,6 +124,10 @@
124
124
  * This mixin specifies basic text-styles for components that render a richtext
125
125
  * content.
126
126
  */
127
+ :root {
128
+ --pk-grid-padding: var(--pk-space-lg);
129
+ }
130
+
127
131
  .prokodo-Grid {
128
132
  display: grid;
129
133
  grid-template-columns: repeat(12, 1fr);
@@ -124,6 +124,10 @@
124
124
  * This mixin specifies basic text-styles for components that render a richtext
125
125
  * content.
126
126
  */
127
+ :root {
128
+ --pk-grid-padding: var(--pk-space-lg);
129
+ }
130
+
127
131
  .prokodo-Grid {
128
132
  display: grid;
129
133
  grid-template-columns: repeat(12, 1fr);
@@ -132,6 +132,10 @@
132
132
  * This mixin specifies basic text-styles for components that render a richtext
133
133
  * content.
134
134
  */
135
+ :root {
136
+ --pk-image-text-content-color: var(--pk-color-muted);
137
+ }
138
+
135
139
  @keyframes ImageText_borderFlowDown {
136
140
  from {
137
141
  background-position: 0 -100%;
@@ -124,6 +124,10 @@
124
124
  * This mixin specifies basic text-styles for components that render a richtext
125
125
  * content.
126
126
  */
127
+ :root {
128
+ --pk-image-text-content-color: var(--pk-color-muted);
129
+ }
130
+
127
131
  @keyframes ImageText_borderFlowDown {
128
132
  from {
129
133
  background-position: 0 -100%;
@@ -126,6 +126,26 @@
126
126
  * This mixin specifies basic text-styles for components that render a richtext
127
127
  * content.
128
128
  */
129
+ :root {
130
+ --pk-input-bg: var(--pk-color-surface);
131
+ --pk-input-fg: var(--pk-color-fg);
132
+ --pk-input-fg-muted: var(--pk-color-muted);
133
+ --pk-input-border: var(--pk-color-border);
134
+ --pk-input-border-focus: var(--pk-color-brand);
135
+ --pk-input-radius: var(--pk-radius-pill);
136
+ --pk-input-padding-x: var(--pk-space-lg);
137
+ --pk-input-padding-y: 0.875rem;
138
+ --pk-input-label-fg: var(--pk-color-muted);
139
+ --pk-input-label-focused-fg: var(--pk-color-brand);
140
+ --pk-input-helper-fg: var(--pk-palette-grey-300);
141
+ --pk-input-focus-ring: var(--pk-focus-ring-color);
142
+ --pk-input-shadow: var(--pk-shadow-sm);
143
+ --pk-input-shadow-color: rgba(0, 0, 0, 0.1);
144
+ --pk-input-shadow-color-focus: color-mix(in srgb, var(--pk-input-border-focus) 30%, transparent);
145
+ --pk-input-gradient-from: var(--pk-color-brand);
146
+ --pk-input-gradient-to: var(--pk-color-accent);
147
+ }
148
+
129
149
  @keyframes inputNotchAnimate {
130
150
  0%, 100% {
131
151
  border-color: var(--pk-input-gradient-from);