@cratis/components 2.4.1 → 2.5.1

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 (65) hide show
  1. package/dist/cjs/CommandDialog/CommandDialog.js +5 -4
  2. package/dist/cjs/CommandDialog/CommandDialog.js.map +1 -1
  3. package/dist/cjs/CommandDialog/CommandStepper.js +5 -4
  4. package/dist/cjs/CommandDialog/CommandStepper.js.map +1 -1
  5. package/dist/cjs/CommandDialog/StepperCommandDialog.js +5 -4
  6. package/dist/cjs/CommandDialog/StepperCommandDialog.js.map +1 -1
  7. package/dist/cjs/CommandDialog/applyBeforeExecute.js +42 -0
  8. package/dist/cjs/CommandDialog/applyBeforeExecute.js.map +1 -0
  9. package/dist/cjs/CommandDialog/index.js +2 -0
  10. package/dist/cjs/CommandDialog/index.js.map +1 -1
  11. package/dist/cjs/Common/Icon.js +14 -3
  12. package/dist/cjs/Common/Icon.js.map +1 -1
  13. package/dist/cjs/Common/Tooltip.js +3 -3
  14. package/dist/cjs/Common/Tooltip.js.map +1 -1
  15. package/dist/cjs/Common/index.js +2 -0
  16. package/dist/cjs/Common/index.js.map +1 -1
  17. package/dist/cjs/Common/normalizeIconClass.js +48 -0
  18. package/dist/cjs/Common/normalizeIconClass.js.map +1 -0
  19. package/dist/cjs/Toolbar/ToolbarFanOutItem.js +1 -1
  20. package/dist/cjs/Toolbar/ToolbarFanOutItem.js.map +1 -1
  21. package/dist/cjs/Toolbar/ToolbarFolder.js +1 -1
  22. package/dist/cjs/Toolbar/ToolbarFolder.js.map +1 -1
  23. package/dist/cjs/tailwind-utilities.css +81 -136
  24. package/dist/esm/CommandDialog/CommandDialog.d.ts +3 -1
  25. package/dist/esm/CommandDialog/CommandDialog.d.ts.map +1 -1
  26. package/dist/esm/CommandDialog/CommandDialog.js +5 -4
  27. package/dist/esm/CommandDialog/CommandDialog.js.map +1 -1
  28. package/dist/esm/CommandDialog/CommandStepper.d.ts +3 -1
  29. package/dist/esm/CommandDialog/CommandStepper.d.ts.map +1 -1
  30. package/dist/esm/CommandDialog/CommandStepper.js +5 -4
  31. package/dist/esm/CommandDialog/CommandStepper.js.map +1 -1
  32. package/dist/esm/CommandDialog/StepperCommandDialog.d.ts +3 -1
  33. package/dist/esm/CommandDialog/StepperCommandDialog.d.ts.map +1 -1
  34. package/dist/esm/CommandDialog/StepperCommandDialog.js +5 -4
  35. package/dist/esm/CommandDialog/StepperCommandDialog.js.map +1 -1
  36. package/dist/esm/CommandDialog/applyBeforeExecute.d.ts +3 -0
  37. package/dist/esm/CommandDialog/applyBeforeExecute.d.ts.map +1 -0
  38. package/dist/esm/CommandDialog/applyBeforeExecute.js +40 -0
  39. package/dist/esm/CommandDialog/applyBeforeExecute.js.map +1 -0
  40. package/dist/esm/CommandDialog/index.d.ts +1 -0
  41. package/dist/esm/CommandDialog/index.d.ts.map +1 -1
  42. package/dist/esm/CommandDialog/index.js +1 -0
  43. package/dist/esm/CommandDialog/index.js.map +1 -1
  44. package/dist/esm/Common/Icon.d.ts.map +1 -1
  45. package/dist/esm/Common/Icon.js +14 -3
  46. package/dist/esm/Common/Icon.js.map +1 -1
  47. package/dist/esm/Common/Tooltip.d.ts +1 -0
  48. package/dist/esm/Common/Tooltip.d.ts.map +1 -1
  49. package/dist/esm/Common/Tooltip.js +3 -3
  50. package/dist/esm/Common/Tooltip.js.map +1 -1
  51. package/dist/esm/Common/index.d.ts +1 -0
  52. package/dist/esm/Common/index.d.ts.map +1 -1
  53. package/dist/esm/Common/index.js +1 -0
  54. package/dist/esm/Common/index.js.map +1 -1
  55. package/dist/esm/Common/normalizeIconClass.d.ts +6 -0
  56. package/dist/esm/Common/normalizeIconClass.d.ts.map +1 -0
  57. package/dist/esm/Common/normalizeIconClass.js +46 -0
  58. package/dist/esm/Common/normalizeIconClass.js.map +1 -0
  59. package/dist/esm/Toolbar/ToolbarFanOutItem.js +1 -1
  60. package/dist/esm/Toolbar/ToolbarFanOutItem.js.map +1 -1
  61. package/dist/esm/Toolbar/ToolbarFolder.js +1 -1
  62. package/dist/esm/Toolbar/ToolbarFolder.js.map +1 -1
  63. package/dist/esm/tailwind-utilities.css +81 -136
  64. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  65. package/package.json +5 -5
@@ -0,0 +1,40 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+ /**
4
+ * Applies an `onBeforeExecute` transformer safely.
5
+ *
6
+ * The typed callback contract requires the transformed values to be returned, but
7
+ * JavaScript consumers (and mistyped call sites) can still return `undefined` by
8
+ * using the callback as a side-effect hook. Executing with `undefined` would wipe
9
+ * every command value — silent data loss at submit time. This guard treats a
10
+ * missing return as "keep the current values" and warns, so the command always
11
+ * executes with a real object.
12
+ *
13
+ * A **synchronous** callback is applied synchronously (the result is returned
14
+ * directly, not wrapped in a promise) so the command values are set before the same
15
+ * tick's execution proceeds; an **async** callback returns a promise to await.
16
+ *
17
+ * @typeParam TCommand - The command values type.
18
+ * @param onBeforeExecute - The transformer to apply (sync or async).
19
+ * @param currentValues - The command values to transform.
20
+ * @returns The transformed values, or `currentValues` when the callback returned nothing.
21
+ */
22
+ function applyBeforeExecute(onBeforeExecute, currentValues) {
23
+ const transformed = onBeforeExecute(currentValues);
24
+ if (transformed instanceof Promise) {
25
+ return transformed.then((resolved) => keepCurrentWhenMissing(resolved, currentValues));
26
+ }
27
+ return keepCurrentWhenMissing(transformed, currentValues);
28
+ }
29
+ function keepCurrentWhenMissing(transformed, currentValues) {
30
+ if (transformed === undefined) {
31
+ console.warn('onBeforeExecute returned no value. It is a transformer and must return the command values ' +
32
+ '(mutated or not). Keeping the current values so the command does not execute with undefined. ' +
33
+ 'If you only need a side effect, return the values you received.');
34
+ return currentValues;
35
+ }
36
+ return transformed;
37
+ }
38
+
39
+ export { applyBeforeExecute };
40
+ //# sourceMappingURL=applyBeforeExecute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyBeforeExecute.js","sources":["../../../CommandDialog/applyBeforeExecute.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AAiBA;;;;;;;;;;;;;;;;;;AAkBG;AACG,SAAU,kBAAkB,CAC9B,eAAgD,EAChD,aAAuB,EAAA;AAEvB,IAAA,MAAM,WAAW,GAAG,eAAe,CAAC,aAAa,CAAC;AAClD,IAAA,IAAI,WAAW,YAAY,OAAO,EAAE;AAChC,QAAA,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,sBAAsB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC1F;AACA,IAAA,OAAO,sBAAsB,CAAC,WAAW,EAAE,aAAa,CAAC;AAC7D;AAEA,SAAS,sBAAsB,CAAW,WAAiC,EAAE,aAAuB,EAAA;AAChG,IAAA,IAAI,WAAW,KAAK,SAAS,EAAE;QAC3B,OAAO,CAAC,IAAI,CACR,4FAA4F;YAC5F,+FAA+F;AAC/F,YAAA,iEAAiE,CACpE;AACD,QAAA,OAAO,aAAa;IACxB;AACA,IAAA,OAAO,WAAW;AACtB;;;;"}
@@ -1,3 +1,4 @@
1
+ export * from './applyBeforeExecute';
1
2
  export * from './CommandDialog';
2
3
  export * from './CommandStepper';
3
4
  export * from './StepperCommandDialog';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../CommandDialog/index.ts"],"names":[],"mappings":"AAGA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../CommandDialog/index.ts"],"names":[],"mappings":"AAGA,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC"}
@@ -1,3 +1,4 @@
1
+ export { applyBeforeExecute } from './applyBeforeExecute.js';
1
2
  export { CommandDialog } from './CommandDialog.js';
2
3
  export { CommandStepper, CommandStepperContent } from './CommandStepper.js';
3
4
  export { StepperCommandDialog } from './StepperCommandDialog.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../CommandDialog/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;AACA"}
1
+ {"version":3,"file":"index.js","sources":["../../../CommandDialog/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAAA;AACA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../Common/Icon.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMlC,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AAGtC,MAAM,WAAW,gBAAgB;IAE7B,IAAI,EAAE,IAAI,CAAC;IAGX,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAUD,eAAO,MAAM,WAAW,GAAI,qBAAqB,gBAAgB,gCAMhE,CAAC"}
1
+ {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../Common/Icon.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAYlC,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AAGtC,MAAM,WAAW,gBAAgB;IAE7B,IAAI,EAAE,IAAI,CAAC;IAGX,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAYD,eAAO,MAAM,WAAW,GAAI,qBAAqB,gBAAgB,gCAchE,CAAC"}
@@ -1,16 +1,27 @@
1
1
  import { jsx, Fragment } from 'react/jsx-runtime';
2
+ import { normalizeIconClass } from './normalizeIconClass.js';
2
3
 
3
4
  /**
4
5
  * Renders an {@link Icon} value.
5
6
  *
6
7
  * - When `icon` is a non-empty string it is treated as a PrimeIcons (or other icon-font)
7
- * CSS class and rendered as `<i className={icon} />`.
8
+ * CSS class and rendered as `<i className={icon} />`. A lone PrimeIcons class missing its
9
+ * base `pi` class (`'pi-home'`) is repaired to `'pi pi-home'`, and a bare icon name
10
+ * (`'plus'`) that would silently render nothing logs a development warning.
8
11
  * - Otherwise the value is rendered as-is, allowing any React node (SVG, component, etc.)
9
12
  * to be used as an icon.
10
13
  */
11
14
  const IconDisplay = ({ icon, className }) => {
12
- if (typeof icon === 'string' && icon.length > 0) {
13
- const combined = className ? `${icon} ${className}` : icon;
15
+ if (typeof icon === 'string') {
16
+ const { className: resolved, warning } = normalizeIconClass(icon);
17
+ const isDevelopment = typeof process === 'undefined' || process.env.NODE_ENV !== 'production';
18
+ if (warning && isDevelopment) {
19
+ console.warn(warning);
20
+ }
21
+ if (resolved.length === 0) {
22
+ return jsx(Fragment, {});
23
+ }
24
+ const combined = className ? `${resolved} ${className}` : resolved;
14
25
  return jsx("i", { className: combined });
15
26
  }
16
27
  return jsx(Fragment, { children: icon });
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.js","sources":["../../../Common/Icon.tsx"],"sourcesContent":[null],"names":["_jsx","_Fragment"],"mappings":";;AAoBA;;;;;;;AAOG;AACI,MAAM,WAAW,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,EAAoB,KAAI;IACjE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,QAAA,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,GAAG,IAAI;AAC1D,QAAA,OAAOA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,QAAQ,GAAI;IACrC;IACA,OAAOA,GAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAG,IAAI,EAAA,CAAI;AACtB;;;;"}
1
+ {"version":3,"file":"Icon.js","sources":["../../../Common/Icon.tsx"],"sourcesContent":[null],"names":["_jsx","_Fragment"],"mappings":";;;AA0BA;;;;;;;;;AASG;AACI,MAAM,WAAW,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,EAAoB,KAAI;AACjE,IAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC1B,QAAA,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC;AACjE,QAAA,MAAM,aAAa,GAAG,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;AAC7F,QAAA,IAAI,OAAO,IAAI,aAAa,EAAE;AAC1B,YAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QACzB;AACA,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,YAAA,OAAOA,iBAAK;QAChB;AACA,QAAA,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,GAAG,QAAQ;AAClE,QAAA,OAAOA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,QAAQ,GAAI;IACrC;IACA,OAAOA,GAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAG,IAAI,EAAA,CAAI;AACtB;;;;"}
@@ -4,6 +4,7 @@ export type TooltipPosition = 'top' | 'right' | 'bottom' | 'left';
4
4
  export interface TooltipProps {
5
5
  content: string;
6
6
  position?: TooltipPosition;
7
+ disabled?: boolean;
7
8
  children: React.ReactNode;
8
9
  }
9
10
  export declare const Tooltip: React.FC<TooltipProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../Common/Tooltip.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,eAAe,CAAC;AAGvB,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAGlE,MAAM,WAAW,YAAY;IAEzB,OAAO,EAAE,MAAM,CAAC;IAEhB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAE3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAaD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAa1C,CAAC"}
1
+ {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../Common/Tooltip.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,eAAe,CAAC;AAGvB,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAGlE,MAAM,WAAW,YAAY;IAEzB,OAAO,EAAE,MAAM,CAAC;IAEhB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAM3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAaD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAe1C,CAAC"}
@@ -11,9 +11,9 @@ const POSITION_CLASSES = {
11
11
  * A CSS-only hover tooltip wrapper. Wraps any child element and displays
12
12
  * a styled floating label on hover without relying on native browser tooltips.
13
13
  */
14
- const Tooltip = ({ content, position = 'top', children }) => (jsxs("div", { className: 'relative group inline-flex', children: [children, jsx("div", { role: 'tooltip', className: `tooltip-bubble pointer-events-none absolute ${POSITION_CLASSES[position]} z-50
15
- text-xs px-2 py-1 rounded
16
- whitespace-nowrap opacity-0 group-hover:opacity-100 transition-opacity duration-150 delay-200`, style: { fontFamily: 'system-ui, sans-serif' }, children: content })] }));
14
+ const Tooltip = ({ content, position = 'top', disabled = false, children }) => (jsxs("div", { className: 'relative group inline-flex', children: [children, !disabled && (jsx("div", { role: 'tooltip', className: `tooltip-bubble pointer-events-none absolute ${POSITION_CLASSES[position]} z-50
15
+ text-xs px-2 py-1 rounded
16
+ whitespace-nowrap opacity-0 group-hover:opacity-100 transition-opacity duration-150 delay-200`, style: { fontFamily: 'system-ui, sans-serif' }, children: content }))] }));
17
17
 
18
18
  export { Tooltip };
19
19
  //# sourceMappingURL=Tooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","sources":["../../../Common/Tooltip.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;AAmBA,MAAM,gBAAgB,GAAoC;AACtD,IAAA,KAAK,EAAG,yCAAyC;AACjD,IAAA,IAAI,EAAI,0CAA0C;AAClD,IAAA,GAAG,EAAK,4CAA4C;AACpD,IAAA,MAAM,EAAE,yCAAyC;CACpD;AAED;;;AAGG;AACI,MAAM,OAAO,GAA2B,CAAC,EAAE,OAAO,EAAE,QAAQ,GAAG,KAAK,EAAE,QAAQ,EAAE,MACnFA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,4BAA4B,EAAA,QAAA,EAAA,CACtC,QAAQ,EACTC,aACI,IAAI,EAAC,SAAS,EACd,SAAS,EAAE,CAAA,4CAAA,EAA+C,gBAAgB,CAAC,QAAQ,CAAC,CAAA;;AAEc,6GAAA,CAAA,EAClG,KAAK,EAAE,EAAE,UAAU,EAAE,uBAAuB,EAAE,EAAA,QAAA,EAE7C,OAAO,EAAA,CACN,CAAA,EAAA,CACJ;;;;"}
1
+ {"version":3,"file":"Tooltip.js","sources":["../../../Common/Tooltip.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;AAyBA,MAAM,gBAAgB,GAAoC;AACtD,IAAA,KAAK,EAAG,yCAAyC;AACjD,IAAA,IAAI,EAAI,0CAA0C;AAClD,IAAA,GAAG,EAAK,4CAA4C;AACpD,IAAA,MAAM,EAAE,yCAAyC;CACpD;AAED;;;AAGG;MACU,OAAO,GAA2B,CAAC,EAAE,OAAO,EAAE,QAAQ,GAAG,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,QAAQ,EAAE,MACrGA,cAAK,SAAS,EAAC,4BAA4B,EAAA,QAAA,EAAA,CACtC,QAAQ,EACR,CAAC,QAAQ,KACNC,GAAA,CAAA,KAAA,EAAA,EACI,IAAI,EAAC,SAAS,EACd,SAAS,EAAE,+CAA+C,gBAAgB,CAAC,QAAQ,CAAC,CAAA;;AAEc,iHAAA,CAAA,EAClG,KAAK,EAAE,EAAE,UAAU,EAAE,uBAAuB,EAAE,EAAA,QAAA,EAE7C,OAAO,EAAA,CACN,CACT,CAAA,EAAA,CACC;;;;"}
@@ -1,6 +1,7 @@
1
1
  export * from './CratisComponentsProvider';
2
2
  export * from './ErrorBoundary';
3
3
  export * from './Icon';
4
+ export * from './normalizeIconClass';
4
5
  export * from './Page';
5
6
  export * from './FormElement';
6
7
  export * from './Tooltip';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../Common/index.ts"],"names":[],"mappings":"AAGA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../Common/index.ts"],"names":[],"mappings":"AAGA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC;AACvB,cAAc,sBAAsB,CAAC;AACrC,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC"}
@@ -1,6 +1,7 @@
1
1
  export { CratisComponentsProvider, cratisDefaults, mergeCratisComponentsConfig } from './CratisComponentsProvider.js';
2
2
  export { ErrorBoundary } from './ErrorBoundary.js';
3
3
  export { IconDisplay } from './Icon.js';
4
+ export { normalizeIconClass } from './normalizeIconClass.js';
4
5
  export { Page } from './Page.js';
5
6
  export { FormElement } from './FormElement.js';
6
7
  export { Tooltip } from './Tooltip.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../Common/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAAA;AACA"}
1
+ {"version":3,"file":"index.js","sources":["../../../Common/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;AAAA;AACA"}
@@ -0,0 +1,6 @@
1
+ export interface NormalizedIconClass {
2
+ className: string;
3
+ warning?: string;
4
+ }
5
+ export declare function normalizeIconClass(icon: string): NormalizedIconClass;
6
+ //# sourceMappingURL=normalizeIconClass.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeIconClass.d.ts","sourceRoot":"","sources":["../../../Common/normalizeIconClass.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,mBAAmB;IAEhC,SAAS,EAAE,MAAM,CAAC;IAOlB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAoBD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CA0BpE"}
@@ -0,0 +1,46 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+ /**
4
+ * Normalizes a string icon value into a CSS class for {@link IconDisplay}.
5
+ *
6
+ * A string icon is meant to be a full icon-font CSS class such as `'pi pi-home'`. Two
7
+ * mistakes silently render nothing — and look like the icon "just doesn't work":
8
+ *
9
+ * - A lone PrimeIcons class (`'pi-home'`) missing its required base `pi` class. This is
10
+ * unambiguous, so it is repaired to `'pi pi-home'`.
11
+ * - A bare icon name (`'plus'`, `'home'`) that is not a CSS class at all. There is no safe
12
+ * way to know which icon font it belongs to, so the value is left untouched and a warning
13
+ * is produced pointing at the full class (`'pi pi-plus'`) or a React node.
14
+ *
15
+ * Full class strings (anything containing whitespace) and already-prefixed values pass
16
+ * through unchanged.
17
+ *
18
+ * @param icon - The raw string icon value.
19
+ * @returns The class to render and an optional developer warning.
20
+ */
21
+ function normalizeIconClass(icon) {
22
+ const trimmed = icon.trim();
23
+ if (trimmed.length === 0) {
24
+ return { className: '' };
25
+ }
26
+ // A full class string (multiple tokens) is taken as-is — the caller spelled it out.
27
+ if (trimmed.includes(' ')) {
28
+ return { className: trimmed };
29
+ }
30
+ // A lone PrimeIcons icon class missing its base `pi` class — repair it.
31
+ if (trimmed.startsWith('pi-')) {
32
+ return { className: `pi pi-${trimmed.slice('pi-'.length)}` };
33
+ }
34
+ // A single plain word (no hyphen, no prefix) is almost certainly a bare icon name that
35
+ // will not render. Leave rendering untouched but guide the caller to the real class.
36
+ if (trimmed !== 'pi' && /^[a-z][a-z0-9]*$/i.test(trimmed)) {
37
+ return {
38
+ className: trimmed,
39
+ warning: `IconDisplay received '${trimmed}', which looks like a bare icon name rather than a CSS class, so it will not render as an icon. Use a full icon class such as 'pi pi-${trimmed}', or pass a React node.`,
40
+ };
41
+ }
42
+ return { className: trimmed };
43
+ }
44
+
45
+ export { normalizeIconClass };
46
+ //# sourceMappingURL=normalizeIconClass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeIconClass.js","sources":["../../../Common/normalizeIconClass.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AAeA;;;;;;;;;;;;;;;;;AAiBG;AACG,SAAU,kBAAkB,CAAC,IAAY,EAAA;AAC3C,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;AAC3B,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,QAAA,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE;IAC5B;;AAGA,IAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACvB,QAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE;IACjC;;AAGA,IAAA,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AAC3B,QAAA,OAAO,EAAE,SAAS,EAAE,CAAA,MAAA,EAAS,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA,CAAE,EAAE;IAChE;;;IAIA,IAAI,OAAO,KAAK,IAAI,IAAI,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QACvD,OAAO;AACH,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,OAAO,EAAE,CAAA,sBAAA,EAAyB,OAAO,CAAA,qIAAA,EAAwI,OAAO,CAAA,wBAAA,CAA0B;SACrN;IACL;AAEA,IAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE;AACjC;;;;"}
@@ -36,7 +36,7 @@ const ToolbarFanOutItem = ({ icon, tooltip, tooltipPosition = 'right', fanOutDir
36
36
  const activeClass = isExpanded ? 'toolbar-button--active' : '';
37
37
  const panelVisibleClass = isExpanded ? 'toolbar-fanout-panel--visible' : '';
38
38
  const directionClass = `toolbar-fanout-panel--${fanOutDirection}`;
39
- return (jsxs("div", { className: 'toolbar-fanout-item', ref: containerRef, children: [jsx(Tooltip, { content: tooltip, position: tooltipPosition, children: jsx("button", { type: 'button', "aria-label": tooltip, "aria-expanded": isExpanded, onClick: handleToggle, className: `toolbar-button w-10 h-10 flex items-center justify-center rounded-lg cursor-pointer ${activeClass}`, children: jsx(IconDisplay, { icon: icon, className: 'text-lg' }) }) }), jsx("div", { className: `toolbar-fanout-panel ${directionClass} ${panelVisibleClass}`, children: children })] }));
39
+ return (jsxs("div", { className: 'toolbar-fanout-item', ref: containerRef, children: [jsx(Tooltip, { content: tooltip, position: tooltipPosition, disabled: isExpanded, children: jsx("button", { type: 'button', "aria-label": tooltip, "aria-expanded": isExpanded, onClick: handleToggle, className: `toolbar-button w-10 h-10 flex items-center justify-center rounded-lg cursor-pointer ${activeClass}`, children: jsx(IconDisplay, { icon: icon, className: 'text-lg' }) }) }), jsx("div", { className: `toolbar-fanout-panel ${directionClass} ${panelVisibleClass}`, children: children })] }));
40
40
  };
41
41
 
42
42
  export { ToolbarFanOutItem };
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarFanOutItem.js","sources":["../../../Toolbar/ToolbarFanOutItem.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;;;AA2BA;;;;;;;;;AASG;MACU,iBAAiB,GAAG,CAAC,EAC9B,IAAI,EACJ,OAAO,EACP,eAAe,GAAG,OAAO,EACzB,eAAe,GAAG,OAAO,EACzB,QAAQ,GACa,KAAI;IACzB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AACnD,IAAA,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC;IAEjD,MAAM,YAAY,GAAG,MAAK;AACtB,QAAA,aAAa,CAAC,CAAC,UAAU,CAAC;AAC9B,IAAA,CAAC;;IAGD,SAAS,CAAC,MAAK;AACX,QAAA,IAAI,CAAC,UAAU;YAAE;AAEjB,QAAA,MAAM,kBAAkB,GAAG,CAAC,KAAiB,KAAI;AAC7C,YAAA,IAAI,YAAY,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE;gBAC9E,aAAa,CAAC,KAAK,CAAC;YACxB;AACJ,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC1D,QAAA,OAAO,MAAK;AACR,YAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AACjE,QAAA,CAAC;AACL,IAAA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAEhB,MAAM,WAAW,GAAG,UAAU,GAAG,wBAAwB,GAAG,EAAE;IAC9D,MAAM,iBAAiB,GAAG,UAAU,GAAG,+BAA+B,GAAG,EAAE;AAC3E,IAAA,MAAM,cAAc,GAAG,CAAA,sBAAA,EAAyB,eAAe,EAAE;AAEjE,IAAA,QACIA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,EAAC,GAAG,EAAE,YAAY,EAAA,QAAA,EAAA,CAClDC,GAAA,CAAC,OAAO,IAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAA,QAAA,EAChDA,gBACI,IAAI,EAAC,QAAQ,EAAA,YAAA,EACD,OAAO,EAAA,eAAA,EACJ,UAAU,EACzB,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,CAAA,oFAAA,EAAuF,WAAW,CAAA,CAAE,YAE/GA,GAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAC,SAAS,EAAA,CAAG,EAAA,CAC1C,EAAA,CACH,EACVA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,wBAAwB,cAAc,CAAA,CAAA,EAAI,iBAAiB,CAAA,CAAE,EAAA,QAAA,EACxE,QAAQ,EAAA,CACP,CAAA,EAAA,CACJ;AAEd;;;;"}
1
+ {"version":3,"file":"ToolbarFanOutItem.js","sources":["../../../Toolbar/ToolbarFanOutItem.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;;;AA2BA;;;;;;;;;AASG;MACU,iBAAiB,GAAG,CAAC,EAC9B,IAAI,EACJ,OAAO,EACP,eAAe,GAAG,OAAO,EACzB,eAAe,GAAG,OAAO,EACzB,QAAQ,GACa,KAAI;IACzB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AACnD,IAAA,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC;IAEjD,MAAM,YAAY,GAAG,MAAK;AACtB,QAAA,aAAa,CAAC,CAAC,UAAU,CAAC;AAC9B,IAAA,CAAC;;IAGD,SAAS,CAAC,MAAK;AACX,QAAA,IAAI,CAAC,UAAU;YAAE;AAEjB,QAAA,MAAM,kBAAkB,GAAG,CAAC,KAAiB,KAAI;AAC7C,YAAA,IAAI,YAAY,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE;gBAC9E,aAAa,CAAC,KAAK,CAAC;YACxB;AACJ,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC1D,QAAA,OAAO,MAAK;AACR,YAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AACjE,QAAA,CAAC;AACL,IAAA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAEhB,MAAM,WAAW,GAAG,UAAU,GAAG,wBAAwB,GAAG,EAAE;IAC9D,MAAM,iBAAiB,GAAG,UAAU,GAAG,+BAA+B,GAAG,EAAE;AAC3E,IAAA,MAAM,cAAc,GAAG,CAAA,sBAAA,EAAyB,eAAe,EAAE;AAEjE,IAAA,QACIA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,EAAC,GAAG,EAAE,YAAY,EAAA,QAAA,EAAA,CAClDC,GAAA,CAAC,OAAO,EAAA,EAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAA,QAAA,EACtEA,GAAA,CAAA,QAAA,EAAA,EACI,IAAI,EAAC,QAAQ,EAAA,YAAA,EACD,OAAO,EAAA,eAAA,EACJ,UAAU,EACzB,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,CAAA,oFAAA,EAAuF,WAAW,CAAA,CAAE,EAAA,QAAA,EAE/GA,GAAA,CAAC,WAAW,IAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAC,SAAS,EAAA,CAAG,EAAA,CAC1C,EAAA,CACH,EACVA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAA,qBAAA,EAAwB,cAAc,CAAA,CAAA,EAAI,iBAAiB,EAAE,EAAA,QAAA,EACxE,QAAQ,EAAA,CACP,CAAA,EAAA,CACJ;AAEd;;;;"}
@@ -44,7 +44,7 @@ const ToolbarFolder = ({ icon, title, tooltipPosition = 'right', folderDirection
44
44
  const panelVisibleClass = isExpanded ? 'toolbar-folder-panel--visible' : '';
45
45
  const directionClass = `toolbar-folder-panel--${folderDirection}`;
46
46
  const modeClass = mode === 'list' ? 'toolbar-folder-panel--list' : '';
47
- return (jsx(ToolbarFolderContext.Provider, { value: mode, children: jsxs("div", { className: 'toolbar-folder-item', ref: containerRef, children: [jsx(Tooltip, { content: title, position: tooltipPosition, children: jsx("button", { type: 'button', "aria-label": title, "aria-expanded": isExpanded, onClick: toggleExpanded, className: `toolbar-button w-10 h-10 flex items-center justify-center rounded-lg cursor-pointer ${activeClass}`, children: jsx(IconDisplay, { icon: icon, className: 'text-lg' }) }) }), jsx("div", { className: `toolbar-folder-panel ${directionClass} ${panelVisibleClass} ${modeClass}`, style: mode === 'grid' ? {
47
+ return (jsx(ToolbarFolderContext.Provider, { value: mode, children: jsxs("div", { className: 'toolbar-folder-item', ref: containerRef, children: [jsx(Tooltip, { content: title, position: tooltipPosition, disabled: isExpanded, children: jsx("button", { type: 'button', "aria-label": title, "aria-expanded": isExpanded, onClick: toggleExpanded, className: `toolbar-button w-10 h-10 flex items-center justify-center rounded-lg cursor-pointer ${activeClass}`, children: jsx(IconDisplay, { icon: icon, className: 'text-lg' }) }) }), jsx("div", { className: `toolbar-folder-panel ${directionClass} ${panelVisibleClass} ${modeClass}`, style: mode === 'grid' ? {
48
48
  gridTemplateColumns: `repeat(${columns}, minmax(2.5rem, 2.5rem))`,
49
49
  } : undefined, children: items })] }) }));
50
50
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarFolder.js","sources":["../../../Toolbar/ToolbarFolder.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"ToolbarFolder.js","sources":["../../../Toolbar/ToolbarFolder.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":";;;;;;AAwCA;;;;;;;;AAQG;AACI,MAAM,aAAa,GAAG,CAAC,EAC1B,IAAI,EACJ,KAAK,EACL,eAAe,GAAG,OAAO,EACzB,eAAe,GAAG,OAAO,EACzB,IAAI,GAAG,MAAM,EACb,UAAU,GAAG,CAAC,EACd,QAAQ,GACS,KAAI;IACrB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AACnD,IAAA,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC;AAEjD,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAC1H,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;AAE3C,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,MAAK;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;AAC1C,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC;AAChD,IAAA,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAE3B,MAAM,cAAc,GAAG,MAAK;QACxB,aAAa,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC;AACtC,IAAA,CAAC;IAED,SAAS,CAAC,MAAK;QACX,IAAI,CAAC,UAAU,EAAE;YACb;QACJ;AAEA,QAAA,MAAM,kBAAkB,GAAG,CAAC,KAAiB,KAAI;AAC7C,YAAA,IAAI,YAAY,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE;gBAC9E,aAAa,CAAC,KAAK,CAAC;YACxB;AACJ,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC1D,QAAA,OAAO,MAAK;AACR,YAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AACjE,QAAA,CAAC;AACL,IAAA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAEhB,MAAM,WAAW,GAAG,UAAU,GAAG,wBAAwB,GAAG,EAAE;IAC9D,MAAM,iBAAiB,GAAG,UAAU,GAAG,+BAA+B,GAAG,EAAE;AAC3E,IAAA,MAAM,cAAc,GAAG,CAAA,sBAAA,EAAyB,eAAe,EAAE;AACjE,IAAA,MAAM,SAAS,GAAG,IAAI,KAAK,MAAM,GAAG,4BAA4B,GAAG,EAAE;AAErE,IAAA,QACIA,GAAA,CAAC,oBAAoB,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,IAAI,EAAA,QAAA,EACtCC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,EAAC,GAAG,EAAE,YAAY,EAAA,QAAA,EAAA,CAClDD,GAAA,CAAC,OAAO,EAAA,EAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,YACpEA,GAAA,CAAA,QAAA,EAAA,EACI,IAAI,EAAC,QAAQ,EAAA,YAAA,EACD,KAAK,EAAA,eAAA,EACF,UAAU,EACzB,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,CAAA,oFAAA,EAAuF,WAAW,CAAA,CAAE,EAAA,QAAA,EAE/GA,GAAA,CAAC,WAAW,IAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAC,SAAS,EAAA,CAAG,EAAA,CAC1C,EAAA,CACH,EACVA,GAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAE,CAAA,qBAAA,EAAwB,cAAc,IAAI,iBAAiB,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,EACrF,KAAK,EAAE,IAAI,KAAK,MAAM,GAAG;wBACrB,mBAAmB,EAAE,CAAA,OAAA,EAAU,OAAO,CAAA,yBAAA,CAA2B;qBACpE,GAAG,SAAS,EAAA,QAAA,EAEZ,KAAK,EAAA,CACJ,CAAA,EAAA,CACJ,EAAA,CACsB;AAExC;;;;"}
@@ -1,10 +1,11 @@
1
- /*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
2
  @layer properties;
3
3
  @layer theme, base, components, utilities;
4
4
  @layer theme {
5
5
  :root, :host {
6
- --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
7
- "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
6
+ --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue",
7
+ "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
8
+ "Segoe UI Symbol", "Noto Color Emoji";
8
9
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
9
10
  "Courier New", monospace;
10
11
  --color-red-100: oklch(93.6% 0.032 17.717);
@@ -76,7 +77,7 @@
76
77
  -moz-tab-size: 4;
77
78
  -o-tab-size: 4;
78
79
  tab-size: 4;
79
- font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");
80
+ font-family: var(--default-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");
80
81
  font-feature-settings: var(--default-font-feature-settings, normal);
81
82
  font-variation-settings: var(--default-font-variation-settings, normal);
82
83
  -webkit-tap-highlight-color: transparent;
@@ -128,7 +129,7 @@
128
129
  border-color: inherit;
129
130
  border-collapse: collapse;
130
131
  }
131
- :-moz-focusring {
132
+ :-moz-focusring:where(:not(iframe)) {
132
133
  outline: auto;
133
134
  }
134
135
  progress {
@@ -310,7 +311,7 @@
310
311
  }
311
312
  }
312
313
  .m-0 {
313
- margin: calc(var(--spacing) * 0);
314
+ margin: 0px;
314
315
  }
315
316
  .m-3 {
316
317
  margin: calc(var(--spacing) * 3);
@@ -319,7 +320,7 @@
319
320
  margin-inline: calc(var(--spacing) * 2);
320
321
  }
321
322
  .mt-1 {
322
- margin-top: calc(var(--spacing) * 1);
323
+ margin-top: var(--spacing);
323
324
  }
324
325
  .mt-2 {
325
326
  margin-top: calc(var(--spacing) * 2);
@@ -334,7 +335,7 @@
334
335
  margin-right: calc(var(--spacing) * 2);
335
336
  }
336
337
  .mb-0 {
337
- margin-bottom: calc(var(--spacing) * 0);
338
+ margin-bottom: 0px;
338
339
  }
339
340
  .mb-2 {
340
341
  margin-bottom: calc(var(--spacing) * 2);
@@ -459,7 +460,7 @@
459
460
  justify-content: flex-start;
460
461
  }
461
462
  .gap-1 {
462
- gap: calc(var(--spacing) * 1);
463
+ gap: var(--spacing);
463
464
  }
464
465
  .gap-2 {
465
466
  gap: calc(var(--spacing) * 2);
@@ -476,31 +477,23 @@
476
477
  .gap-8 {
477
478
  gap: calc(var(--spacing) * 8);
478
479
  }
479
- .space-y-2 {
480
- :where(& > :not(:last-child)) {
481
- --tw-space-y-reverse: 0;
482
- margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));
483
- margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));
484
- }
480
+ :where(.space-y-2 > :not(:last-child)) {
481
+ --tw-space-y-reverse: 0;
482
+ margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));
483
+ margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));
485
484
  }
486
- .divide-y {
487
- :where(& > :not(:last-child)) {
488
- --tw-divide-y-reverse: 0;
489
- border-bottom-style: var(--tw-border-style);
490
- border-top-style: var(--tw-border-style);
491
- border-top-width: calc(1px * var(--tw-divide-y-reverse));
492
- border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
493
- }
485
+ :where(.divide-y > :not(:last-child)) {
486
+ --tw-divide-y-reverse: 0;
487
+ border-bottom-style: var(--tw-border-style);
488
+ border-top-style: var(--tw-border-style);
489
+ border-top-width: calc(1px * var(--tw-divide-y-reverse));
490
+ border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
494
491
  }
495
- .divide-slate-700 {
496
- :where(& > :not(:last-child)) {
497
- border-color: var(--color-slate-700);
498
- }
492
+ :where(.divide-slate-700 > :not(:last-child)) {
493
+ border-color: var(--color-slate-700);
499
494
  }
500
- .divide-slate-800 {
501
- :where(& > :not(:last-child)) {
502
- border-color: var(--color-slate-800);
503
- }
495
+ :where(.divide-slate-800 > :not(:last-child)) {
496
+ border-color: var(--color-slate-800);
504
497
  }
505
498
  .truncate {
506
499
  overflow: hidden;
@@ -591,7 +584,7 @@
591
584
  }
592
585
  }
593
586
  .p-1 {
594
- padding: calc(var(--spacing) * 1);
587
+ padding: var(--spacing);
595
588
  }
596
589
  .p-2 {
597
590
  padding: calc(var(--spacing) * 2);
@@ -618,7 +611,7 @@
618
611
  padding-inline: calc(var(--spacing) * 5);
619
612
  }
620
613
  .py-1 {
621
- padding-block: calc(var(--spacing) * 1);
614
+ padding-block: var(--spacing);
622
615
  }
623
616
  .py-1\.5 {
624
617
  padding-block: calc(var(--spacing) * 1.5);
@@ -780,133 +773,85 @@
780
773
  --tw-duration: 150ms;
781
774
  transition-duration: 150ms;
782
775
  }
783
- .group-hover\:opacity-100 {
784
- &:is(:where(.group):hover *) {
785
- @media (hover: hover) {
786
- opacity: 100%;
787
- }
776
+ @media (hover: hover) {
777
+ .group-hover\:opacity-100:is(:where(.group):hover *) {
778
+ opacity: 100%;
788
779
  }
789
780
  }
790
- .placeholder\:text-slate-400 {
791
- &::-moz-placeholder {
792
- color: var(--color-slate-400);
793
- }
794
- &::placeholder {
795
- color: var(--color-slate-400);
796
- }
781
+ .placeholder\:text-slate-400::-moz-placeholder {
782
+ color: var(--color-slate-400);
797
783
  }
798
- .hover\:border-slate-500 {
799
- &:hover {
800
- @media (hover: hover) {
801
- border-color: var(--color-slate-500);
802
- }
803
- }
784
+ .placeholder\:text-slate-400::placeholder {
785
+ color: var(--color-slate-400);
804
786
  }
805
- .hover\:bg-gray-500 {
806
- &:hover {
807
- @media (hover: hover) {
808
- background-color: var(--color-gray-500);
809
- }
787
+ @media (hover: hover) {
788
+ .hover\:border-slate-500:hover {
789
+ border-color: var(--color-slate-500);
810
790
  }
811
- }
812
- .hover\:bg-sky-400 {
813
- &:hover {
814
- @media (hover: hover) {
815
- background-color: var(--color-sky-400);
816
- }
791
+ .hover\:bg-gray-500:hover {
792
+ background-color: var(--color-gray-500);
817
793
  }
818
- }
819
- .hover\:bg-slate-700 {
820
- &:hover {
821
- @media (hover: hover) {
822
- background-color: var(--color-slate-700);
823
- }
794
+ .hover\:bg-sky-400:hover {
795
+ background-color: var(--color-sky-400);
824
796
  }
825
- }
826
- .hover\:bg-slate-800 {
827
- &:hover {
828
- @media (hover: hover) {
829
- background-color: var(--color-slate-800);
830
- }
797
+ .hover\:bg-slate-700:hover {
798
+ background-color: var(--color-slate-700);
831
799
  }
832
- }
833
- .hover\:bg-slate-800\/60 {
834
- &:hover {
835
- @media (hover: hover) {
836
- background-color: color-mix(in srgb, oklch(27.9% 0.041 260.031) 60%, transparent);
837
- @supports (color: color-mix(in lab, red, red)) {
838
- background-color: color-mix(in oklab, var(--color-slate-800) 60%, transparent);
839
- }
800
+ .hover\:bg-slate-800:hover {
801
+ background-color: var(--color-slate-800);
802
+ }
803
+ .hover\:bg-slate-800\/60:hover {
804
+ background-color: color-mix(in srgb, oklch(27.9% 0.041 260.031) 60%, transparent);
805
+ }
806
+ @supports (color: color-mix(in lab, red, red)) {
807
+ .hover\:bg-slate-800\/60:hover {
808
+ background-color: color-mix(in oklab, var(--color-slate-800) 60%, transparent);
840
809
  }
841
810
  }
842
811
  }
843
- .focus\:border-sky-400 {
844
- &:focus {
845
- border-color: var(--color-sky-400);
846
- }
812
+ .focus\:border-sky-400:focus {
813
+ border-color: var(--color-sky-400);
847
814
  }
848
- .focus\:outline-none {
849
- &:focus {
850
- --tw-outline-style: none;
851
- outline-style: none;
852
- }
815
+ .focus\:outline-none:focus {
816
+ --tw-outline-style: none;
817
+ outline-style: none;
853
818
  }
854
- .focus-visible\:ring-2 {
855
- &:focus-visible {
856
- --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
857
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
858
- }
819
+ .focus-visible\:ring-2:focus-visible {
820
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
821
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
859
822
  }
860
- .focus-visible\:ring-sky-400 {
861
- &:focus-visible {
862
- --tw-ring-color: var(--color-sky-400);
863
- }
823
+ .focus-visible\:ring-sky-400:focus-visible {
824
+ --tw-ring-color: var(--color-sky-400);
864
825
  }
865
- .active\:bg-sky-600 {
866
- &:active {
867
- background-color: var(--color-sky-600);
868
- }
826
+ .active\:bg-sky-600:active {
827
+ background-color: var(--color-sky-600);
869
828
  }
870
- .disabled\:cursor-not-allowed {
871
- &:disabled {
872
- cursor: not-allowed;
873
- }
829
+ .disabled\:cursor-not-allowed:disabled {
830
+ cursor: not-allowed;
874
831
  }
875
- .disabled\:opacity-50 {
876
- &:disabled {
877
- opacity: 50%;
878
- }
832
+ .disabled\:opacity-50:disabled {
833
+ opacity: 50%;
879
834
  }
880
- .data-\[p-highlight\=true\]\:border-sky-500 {
881
- &[data-p-highlight="true"] {
882
- border-color: var(--color-sky-500);
883
- }
835
+ .data-\[p-highlight\=true\]\:border-sky-500[data-p-highlight="true"] {
836
+ border-color: var(--color-sky-500);
884
837
  }
885
- .data-\[p-highlight\=true\]\:bg-sky-500 {
886
- &[data-p-highlight="true"] {
887
- background-color: var(--color-sky-500);
888
- }
838
+ .data-\[p-highlight\=true\]\:bg-sky-500[data-p-highlight="true"] {
839
+ background-color: var(--color-sky-500);
889
840
  }
890
- .data-\[p-highlight\=true\]\:bg-sky-500\/10 {
891
- &[data-p-highlight="true"] {
892
- background-color: color-mix(in srgb, oklch(68.5% 0.169 237.323) 10%, transparent);
893
- @supports (color: color-mix(in lab, red, red)) {
894
- background-color: color-mix(in oklab, var(--color-sky-500) 10%, transparent);
895
- }
841
+ .data-\[p-highlight\=true\]\:bg-sky-500\/10[data-p-highlight="true"] {
842
+ background-color: color-mix(in srgb, oklch(68.5% 0.169 237.323) 10%, transparent);
843
+ @supports (color: color-mix(in lab, red, red)) {
844
+ background-color: color-mix(in oklab, var(--color-sky-500) 10%, transparent);
896
845
  }
897
846
  }
898
- .data-\[p-highlight\=true\]\:text-sky-100 {
899
- &[data-p-highlight="true"] {
900
- color: var(--color-sky-100);
901
- }
847
+ .data-\[p-highlight\=true\]\:text-sky-100[data-p-highlight="true"] {
848
+ color: var(--color-sky-100);
902
849
  }
903
- .data-\[p-highlight\=true\]\:text-white {
904
- &[data-p-highlight="true"] {
905
- color: var(--color-white);
906
- }
850
+ .data-\[p-highlight\=true\]\:text-white[data-p-highlight="true"] {
851
+ color: var(--color-white);
907
852
  }
908
- .md\:flex-row {
909
- @media (width >= 48rem) {
853
+ @media (width >= 48rem) {
854
+ .md\:flex-row {
910
855
  flex-direction: row;
911
856
  }
912
857
  }